在Spring Boot中启用热部署的设置
最近我开始学习Spring Boot,并且在尝试设置热更新功能时进行了一番调查。然而,我发现有些文章的信息有点过时或者设置步骤不全,导致我意外地遇到了一些困难。因此,我在这里总结一下。
环境信息
-
- Mac
-
- IntelliJ IDEA 2019.1.2 (Community Edition)
-
- Spring Boot Gradle Plugin 2.1.4
- Spring Boot Devtools 2.1.4
设置步骤
在“偏好设置”中,勾选“自动构建项目”。
按下 Shift+Command+A 键打开“命令搜索”窗口,并执行“注册表”选项。
请勾选”允许在应用运行时编译和自动创建”选项。
在build.gradle文件中添加以下设置。
bootRun {
sourceResources sourceSets.main
}
如果使用Thymeleaf作为模板引擎,请在application.properties中添加以下内容。
spring.thymeleaf.cache = false
关于重新加载的动作
举个例子, 当修改src/main/java/hello/GreetingController.java源代码时, 应用程序会重新加载.
在我的环境中, 要使重新加载生效, 需要用Command+S保存源文件。
...
サービスがシャットダウンされた
2019-05-24 16:18:26.310 INFO 37740 --- [ Thread-33] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
アプリが再起動した
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.4.RELEASE)
2019-05-24 16:18:31.397 INFO 37740 --- [ restartedMain] hello.Application : Starting Application on xxx.local with PID 37740 (/Users/takehiro/Documents/git/sprint-web-mvc/build/classes/java/main started by takehiro in /Users/user/Documents/git/sprint-web-mvc)
2019-05-24 16:18:31.398 INFO 37740 --- [ restartedMain] hello.Application : No active profile set, falling back to default profiles: default
2019-05-24 16:18:31.563 INFO 37740 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
...
另外,当对静态文件src/main/resources/templates/greeting.html进行更改时,只需要通过重新加载浏览器即可实现更改。
对于这种情况,不需要重新加载应用程序。
即時刷新
通过与浏览器的LiveReload扩展结合使用,可以实现自动重新加载,而无需每次手动点击浏览器的重新加载按钮。这是因为Spring Boot Devtools内嵌了LiveReload服务器。
您可以从这里安装扩展程序。
请先打开应用程序,然后在浏览器中显示屏幕。
单击LiveReload扩展程序图标,确保状态显示为“LiveReload is connected, click to disable”。
这样就实现了热加载。
请参考
-
- Spring boot devtools – Static content reloading does not work in IntelliJ
Spring Boot Gradle Plugin Reference Guide
Spring Boot Reference Guide
How do I install and use the browser extensions?