spring为开发者提供了一个名为
spring-boot-devtools
的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。
devtools实现原理:使用了两个ClassLoader,其中一个ClassLoader主要加载不会改变的类(第三方jar包),另一个ClassLoader加载有变更的类,所以也叫restart ClassLoader
,由于需要加载的类很少,可以在较快的速度内实现重启
在pom文件中添加devtools依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true,依赖不会往下传递,
如果有项目依赖本项目,并且想要使用devtools,需要重新引入 -->
<optional>true</optional>
<scope>runtime</scope>
</dependency>
说明
页面热部署
在application.properties文件中配置spring.thymeleaf.cache=false(页面修改后会立即生效)
某些资源在更改时不一定需要触发重新启动
Thymeleaf 模板可以就地进行编辑。默认情况下更改资源路径包括了:/META-INF/maven, /META-INF/resources ,/resources ,/static ,/public 或者 /templates 不会触发重新启动, 但会触发实时重新加载。如果逆向排除这些路径,可以使用如下配置:spring.devtools.restart.exclude=static/,public/