详解Spring Boot:从入门到企业级开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 热部署

在项目开发阶段经常需要运行项目,通过观察结果来验证代码编写是否正确,但如果在每次修改代码后,都要停止并重新运行项目,那么损耗的时间也是很多的。如果在项目运行过程中修改了代码,自动重新加载修改后的代码,而不需要重新启动项目,就能节省大量的时间。

Spring Boot有一个开发者模块spring-boot-devtools,引入该依赖可以为应用提供额外的开发时特性,包括快速的应用程序重启和实时重新加载,以及合理的开发时配置(如模板缓存)。在生产环境下运行完全打包的应用程序时,开发者工具会自动被禁用。

要引入spring-boot-devtools依赖,可以在pom.xml文件中添加下面的代码:

当在pom.xml文件中添加依赖后,需要导入该依赖。之前的IDEA版本可以配置在pom.xml文件修改后,自动更新依赖,新版的IDEA(从IDEA 2020.x版开始)为了防止在POM更新时,Maven自动导入包会出现卡死的问题,取消了自动导入机制,但新增了导入按钮和快捷键。

在新增了Maven依赖后,当前POM文件的右上角会出现一个Maven的小图标,如图2-4所示,单击一下该图标就可以更新依赖了。

图2-4 修改pom.xml文件后出现的Maven图标

也可以通过快捷键“Ctrl+Shift+O”来更新依赖。如果是在Mac系统下,则更新依赖的快捷键是“Shift+Command+O”。

在Eclipse(STS同理)中开发Spring Boot项目时,为了让开发者模块起作用,还需要引入spring-boot-maven-plugin插件,在pom.xml文件中添加下面的代码:

在IDEA中,当创建Spring Boot项目时会自动引入spring-boot-maven-plugin插件,因而无须再另行配置。但是IDEA还需要一些额外的配置。

在IDEA中,单击菜单【File】→【New Projects Setup】→【Settings for New Projects…】,在新项目设置界面中,在左侧面板中展开“Build,Execution,Deployment”节点,选中“Compiler”子节点,图2-5所示为配置自动构建项目。

图2-5 配置自动构建项目

选中“Build project automatically”复选框,单击“OK”按钮。

提示:在当前项目中要应用上述配置,可以单击菜单【File】→【Settings】,配置方式是一样的。

(1)对于IEDA 2021之前的版本,同时按下组合键“Shift+Ctrl+Alt+/”,选择“Registry…”,找到“compiler.automake.allow.when.app.running”并选中,如图2-6所示。

图2-6 配置在程序运行时的自动构建(之前的版本)

单击“Close”按钮,结束配置。

(2)IDEA 2021及之后的版本在Registry配置中取消了compiler.automake.allow.when.app.running选项,新的允许自动构建项目的配置方式为:单击菜单【File】→【Settings…】,在设置界面中,在左侧面板中选中“Advanced Settings”节点,在右侧面板中找到“Compiler”项,如图2-7所示。

图2-7 配置在程序运行时的自动构建(之后的版本)

选中“Allow auto-make to start even if developed application is currently running”。

接下来可以运行项目,体验一下热部署。先在浏览器中访问http://localhost:8080/,看到“Hello World!”的响应结果。修改HelloController类,将home()方法的返回值修改为“Hello”,注意观察IDEA的控制台窗口,可以看到项目重启的输出信息,之后在浏览器中刷新页面,可以看到“Hello”的响应结果。