SpringBoot开发,配置IDEA实现代码保存实时刷新
发布于 作者:苏南大叔 来源:程序如此灵动~
SpringBoot程序员需要的效果就是热更新,而spring boot devtools号称的效果就是:热部署。但是为啥没有期待中的效果呢?为何还需要Ctrl+f9才能重新打包部署呢?这相比较php之类的代码而言。Java的代码的实时生效,实在是很难用。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10,openjdk@23.0.2,IntelliJ IDEA 2024.3.4.1,maven@3.3.2,spring boot@2.5.4,java@17。
实验样本
本文还是拿IDEA初始化的Spring Boot的简单项目做例子。参考文章:
这个项目,通过maven install安装了开发时专用的插件spring boot devtools。pom.xml文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>看效果的网址是:
常规方式
常规方式,就是在编辑器的顶部点击绿色的运行按钮。然后修改文件,然后再使用ctrl+f9【重新构建】看效果。

看重点,就是说不重新编译,是看不了效果的。所以,点击maven compile或者maven pageage可能也是有效果的。
配置devtools热部署
spring boot devtools安装之后,是需要做配置才能生效的。
- 修改的文件是:
application.properties【推荐】,也可以是application.yml,任选其一。 - 有好几个位置可以放,优先级不一样。
- 本文修改的文件是:
src/main/resources/application.properties。
修改内容如下:
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.exclude=WEB-INF/**
spring.devtools.restart.poll-interval=500ms
spring.devtools.restart.quiet-period=300ms
spring.thymeleaf.cache=false前几条内容就是restart,后面的最后一条内容就是:禁用thymeleaf这个默认模版的缓存。对于模版修改之后,是否需要restart的问题。苏南大叔认为:可能需要additional-paths=src/main,包含了java和template目录。
这东西的效果就是restart,没有编译和打包。所以只能看到重启的效果,页面变化却是没有生效。

下面的这篇文章,说的挺明白的。参考:
配置IDE
配置自动编译,有两个位置。如下图所示:


配置到这里,就应该可以做到修改文件,到浏览器里面f5就可以看效果了。但是,偶尔会有延迟。
加快编译
对于延迟的问题,这里做一下加速。按着快捷键ctrl+alt+shift+/,进入一个“注册表”的编辑界面。修改两个值,如下图所示:


修改到这里,效果就已经非常好了。对于spring boot项目来说,这样的设置已经足够了。
livereload
livereload所做的是解决浏览器端需要再f5一下的问题,并且springboot devtools里面自带livereload服务器。在配置文件里面启用即可。

src/main/resources/application.properties:
spring.devtools.livereload.enabled=true然后在对应的浏览器里面安装对应的插件,即可使用。
chrome浏览器里面的插件id是:jnihajbhpnppcggbcgedagnkighmdlei。下载方式参考:
能用,不过很多年没人维护这个插件了,浏览器提示已停用。
这个浏览器插件livereload没有那么智能的,任何当前停留的页面,都可以被刷新的。无论当前停留页面和这个被监控的项目代码有没有关系。这个对应关系,是由人为的去对应的。
传统的设置(通用)
在非spring boot时代的时候,还需要做下面的项目配置。如下图所示:


参考文章:
结语
苏南大叔的Java经验文字,请点击下面的连接: