<!-- devtools热部署依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- 防止将依赖传递到其他模块中 --> <optional>true</optional> </dependency>2.2、添加相关配置参数
META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties这些目录通常用于存放静态资源,由于 spring-boot-devtools 工具默认开启了禁用缓存的操作,当文件发生修改时可以实时更新,无需重启应用。当然,我们也可以在application.properties全局文件中指定配置,比如只排除/static、/public和/templates 目录中的文件修改重启操作,额外监控src/main/java目录下的文件修改时自动重启应用。
# 开启热部署(更改文件后,自动重启) spring.devtools.restart.enabled=true # 设置哪些资源变动后不触发自动重启,会覆盖默认的exclude内容(资源不会触发重启,但会触发实时重新加载) spring.devtools.restart.exclude=static/**,public/**,templates/** # 设置需要监控额外的路径,当内容发生变化会出发自动重启(优先于exclude) spring.devtools.restart.additional-paths=src/main/java2.3、IDEA 配置
2.4、开启 fork 配置(选)
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 启用热部署功能(如果devtools不生效) --> <fork>true</fork> </configuration> </plugin> </plugins> </build>大部分情况下,经过实测,没有这个配置也可以实现自动重启服务,具体以实际情况而定。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p th:text="${content}">内容替换</p> </body> </html>接着,创建一个视图接口,内容如下:
@Controller public class HelloController { @GetMapping("/") public String index(ModelMap map) { // 绑定元素 map.addAttribute("content", "Hello World"); return "index"; } }最后,启动服务,在浏览器中访问http://localhost:8080/。
spring.devtools.restart.enabled=false也可以在启动命令中增加-Dspring.devtools.restart.enabled=false参数来进行关闭。自动重启将不再被触发,但是仍将使用自动重启类加载器。如果你想完全禁用类加载器,可以在启动应用程序之前强制设置,示例如下。
public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(Application.class, args); }四、小结