0%

我们有时候需要这样的功能,代码修改后,希望项目能自动重启,不然每次都要手动 Rerun 一样,很麻烦。

开启IDEA的自动编译

在 Compiler 里面勾选 Build project automatically 自动构建项目。

开启IDEA的热部署策略

点击 Edit Configurations…

在 pom.xml 加入依赖

1
2
3
4
5
6
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>

之后,修改代码以后,项目会自动重新编译并重启了,开发也更有效率了。

在 Java 程序中,向第三方发起一个 http 请求时,这时往往需要拼接第三方接口的 URL。

通过字符串+或者 StringBuilder 的 append 方法,都不算是一个最佳实践。因为上述这两种方法都没办法把整个 URL 格式从代码中分离出来。

我觉得最佳实践是通过 String.format() 为 URL 做字符替换。

比如接口的 URL http://www.example.com/service?appid=%d&sign=%s

%d 为数字,%s 为字符串。

我们可以调用 String.format() 方法做参数替换。

1
String url = String.format(url, 1000, "mySign");

结果为:http://www.example.com/service?appid=1000&sign=mySign

@JsonProperty, @JsonIgnore 和 @JsonFormat 注解都是 fasterxml jackson 里面的注解,现在也被 Spring Boot 集成了。

我们在使用上面的注解时,不需要在 pom.xml 显示的引入 fasterxml jackson 的依赖包。只需要加入如下依赖即可。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

@JsonProperty

用于属性、setter / getter 方法上,属性序列化后可重命名。

1
2
3
4
5
@JsonProperty("image_width")
private Double imageWidth;

@JsonProperty("image_height")
private Double imageHeight;

生成的 json 字符串就是image_widthimage_height

@JsonIgnore

属性使用此注解后,将不被序列化。

@JsonFormat

用于格式化日期

1
2
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;