实现热部署的原因
1.
在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、
重新启动,整个过程非常麻烦,影响开发效率。
2.
Spring Boot提供了spring-boot-devtools组件,使得无须手动重启Spring
Boot应用即可重新编译、启动项目,大大缩短编译启动的时间。
3.
devtools会监听classpath下的文件变动,触发Restart类加载器重新加载该类,
从而实现类文件和属性文件的热部署。
4
并不是所有的更改都需要重启应用(如静态资源、视图模板),可以通过设置
spring.devtools.restart.exclude属性来指定一些文件或目录的修改不用重启应
用
开发环境下部署热部署
1.
在pom.xml配置文件中添加dev-tools依赖。
使用optional=true表示依赖不会传递,即该项目依赖devtools;其他项目如
果引入此项目生成的JAR包,则不会包含devtools
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.在applicaton.properties/yml下配置devtools
devtools:
restart:
enabled: true # 开启热部署
additional-paths: src/main/java # 指定热部署的目录
exclude: src/main/resources/static # 排除静态资源目录
3.
开发环境热部署
如果使用了Eclipse,那么在修改完代码并保存之后,项目将自动编译并触发重
启,而如果使用了IntelliJ IDEA,还需要配置项目自动编译。
打开Settings页面,在左边的菜单栏依次找到
Build,Execution,Deployment→Compile,勾选Build project automatically
按Ctrl+Shift+Alt+/快捷键调出Maintenance页面,单击Registry,勾选
compiler.automake.allow.when.app.running复选框。
做完这两步配置之后,若开发者再次在IntelliJ IDEA中修改代码,则项目会自动
重启。