devtools热部署

依赖:


    org.springframework.boot
    spring-boot-devtools
    true

optional=true, 依赖不会传递, 该项目依赖devtools;之后依赖boot项目的项目如果想要使用devtools, 需要重新引入。

application.properties配置:

#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录,添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)
因为其采用的虚拟机机制,该项重启是很快的
(1)base classloader (Base类加载器):加载不改变的Class,例如:第三方提供的jar包。 
(2)restart classloader(Restart类加载器):加载正在开发的Class。 
为什么重启很快,因为重启的时候只是加载了在开发的Class,没有重新加载第三方的jar包。 

intelli idea配置devtool自动重启后,代码不生效的解决方法:

修改了java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:

(1)File-Settings-Compiler-Build Project automatically

devtools热部署_第1张图片

(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

devtools热部署_第2张图片

你可能感兴趣的:(java)