一些小坑
一、使用jackson反序列化时存在多余字段
Unrecognized field "xxx" (……), not marked as ignorable (5 known properties: "xxxxxxxxx",
反序列化字段未匹配上,忽略掉这些字段:
public class JsonUtil {
public static final ObjectMapper objectMapper;
static {
objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
}
二、swagger配置开发环境
@Profile("dev") //指定只可以在dev环境看到接口doc
@Configuration @EnableSwagger2 @Profile("dev") @ComponentScan("com.xxx.xxx.controller") public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.xxx.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { ApiInfo apiInfo = new ApiInfoBuilder().title("Service APIs") .description("Service APIs") .license("xxx") .licenseUrl("http://www.xxx.com") .version("1.0") .build(); return apiInfo; } }
三、modelmapper的严格匹配
private ModelMapper mapper; /** * init mapper */ public DemoController() { this.mapper = new ModelMapper(); this.mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); }
四、编译错误
Error:java: Compilation failed: internal java compiler error
五、git仓库迁移
git仓库迁移,需要重新映射项目地址,不删本地库,修改config即可:
把如下2个文件中的git仓库IP改成新IP地址就行,不必重新拉:
- C:\Users\你的用户名\.ssh\config
- 项目目录\.git\config
如果有多个项目目录,就在每个项目目录里改。
注意改config时使用vi或vim来修改(windows下不能用notepad来修改)
改完了 git pull 或 git push 即可,如果失败,需要执行下命令:(本地分支 local_branch_name 和 远程分支 remote_branch_name 建立联系)
git branch --set-upstream <local_branch_name> origin/<remote_branch_name>
六、notepad编辑问题
用windows系统自带的notepad.exe编辑csv文件,另存为UTF-8格式后,CSVReader读取的第一行列名左上角带符号
解决办法参考:pandas读取txt文件第一行列名困扰我许久的'点'
七、HttpServletRequest序列化报错
HttpServletRequest request = new Request(); JSON.toJSONString(request);
序列化报错:
Caused by: java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
at org.apache.catalina.connector.Request.getAsyncContext(Request.java:1742)
八、Object 和 Map序列化
九、泛型多个约束
java继承中,可以拥有多个接口超类型,但限定中至多有一个类,且必须是限定列表的第一个,一个类型变量或通配符可以有多个限定,例如:<T extends Comparable & Serialization>其中限定类型用‘&’进行分割。
十、金额格式化
NumberFormat AMOUNT_FORMAT = new DecimalFormat(",##0.00"); AMOUNT_FORMAT.format(BigDecimal.valueOf(1232322.23));
格式化输出:1,232,322.23