Java 的项目每次修改了源码以后想要测试都要停止服务,然后重新启动服务。虽然就是点几下鼠标的事情,多少还是比较麻烦的。能自动的还是自动的好。
在 Spring Boot 项目中,只要引入 Spring Boot Dev Tools 其实就可以了。我们可以通过 Spring 的脚手架去引入 Spring Boot Dev Tools,也可以通过 Maven 的方式去引入它。这里给出 Maven 引入的方式。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>
以上就是 pom.xml 文件中引入的依赖。
除了要引入该依赖以外,还需要在插件的位置进行配置,配置如下:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration></plugin></plugins></build>
在上面的配置中,增加了 <configuration> 这个选项,Spring 脚手架生成的 pom.xml 文件中本来是没有这部分的。
如果是在 STS 或 Eclipse 下,只要引入 Spring Boot Dev Tools 就可以了。但是,如果是在 IDEA 下,除了要引入该依赖以外,还需要对 IDEA 进行简单的配置。
在菜单中选择 “Preferences...”,然后对其进行第一步的设置,如下图:
上图中选中 “Build project automatically”,点击 “Apply”。
然后按下 shift + option + command + / ,会出现如下图:
选择 “Registry”,继续进行设置,如下图:
勾选中 “complier.automake.allow.when.app.running” 即可。
经过以上的配置以后,在我们的 Spring Boot 项目中修改某个类文件的代码,观察一下 run 或 debug 的窗口,看看项目有没有自动重启。如果没有重启,那么可能是新引入了 pom 的依赖,需要重启项目,下次再修改了代码项目就会自动重启了。
Spring Boot Dev Tools 不能算是真正的热部署,JRebel 据说更好一些,因为 JRebel 是收费的,我就没有去测试它,有兴趣的可以去试试。