why?
目前的Springboot,当发生了任何修改之后,必须关闭后再启动Application类才能够生效,显得略微麻烦。
what?
简述
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。
devtools的原理
- 使用了两个ClassLoader,
- 一个Classloader加载那些不会改变的类(第三方Jar包),
- 另一个ClassLoader加载会更改的类,称为restart ClassLoader,
- 这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
how?
1. 添加依赖的jar包
<!-- 热部署的相关依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>
确保有这个插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
2. 修改配置文件
文件路径:src/main/resources/application.properties
添加的配置:
# jsp映射相关
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录
spring.devtools.restart.additional-paths=src/main/java
# classpath 目录下的WEB-INF文件夹修改不重启
spring.devtools.restart.exclude=WEB-INF/**
# 实现页面文件的热部署
spring.thymeleaf.cache=false
3. 修改idea设置
第一步 File -> settings :
第二步:在idea界面的右上角有放大镜的搜索功能,搜索 Registry:
result?
重启后
修改java文件保存后:项目自动重启(重启部分内容)
修改页面文件后,刷新浏览器:显示修改后的内容
修改配置文件:项目自动重启