企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# devtools热部署 spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,编码过程不用反复重启应用。ps:php在笑。。。 ## 添加依赖和插件 在pom中添加devtools依赖 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> ``` 在dependencies外添加plugin插件 ``` <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> ``` 注意fork必须为true否则热部署不生效 devtools的运行原理是检测目录里文件的变动,一旦发生改变就重新自动restart应用(第三方的jars不用重启),就三四秒。**不过session值会被清空。** ## Thymeleaf模板页面热部署 直接在application.properties文件中配置 ```spring.thymeleaf.cache=false``` ## 关闭热部署 在application.properties中配置 `spring.devtools.restart.enabled=false`, 此时restart类加载器还会初始化,但不会监视文件更新。 或在SprintApplication.run之前调用 `System.setProperty(“spring.devtools.restart.enabled”, “false”);` ## 指定和排除参与热部署的内容 在application.properties中设置重启的目录 ``spring.devtools.restart.additional-paths: src/main/java`` classpath目录下的WEB-INF文件夹内容修改不重启 ``spring.devtools.restart.exclude: WEB-INF/**`` ## IDEA设置 当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译: 1. File - Settings - Compiler - 勾上Build Project automatically 2. ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running