基本了解:
当我们开启热部署之后,服务器不用重新加载(我们的项目也不用被重启),我们修改过后的代码就能生效。
关于热部署:
重启:Restart 自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器
重载:Reload jar包,加载位置base类加载器
需要添加maven坐标:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
一、手动启动热部署
怎么手工激活热部署?
在项目中修改坐标之后,点击Build-->Build Project (或者使用快捷键Ctrl+F9) 即可
对于热部署,仅仅是加载当前开发者自定义开发的资源,不加载jar资源
二、自动启动热部署
怎么开启自动启动热部署?
① 点击Setting
② 找到下图页面所在的位置
③ 在右侧的界面中,找到这个选项,勾选上,“自动构建项目”
④“Apply”,应用一下
⑤“Ctrl”+“ATL”+“Shift”+“?”, 就会出现这个页面,点击图中选中的这个选项
⑥ 将下图中的第一个Key的Value给勾选上(这是旧版本的idea,如果是新版本的idea参考步骤七)
⑦新版本的idea开启自动启动热部署
在“Advanced Settings”中勾选 “Allow auto.....is currently running”
⑧当使用自动启动热部署的时候,如果我们改完程序,在页面上停留5秒之后,idea就会自动帮我们"Build Project"
三、热部署范围配置
如果我们想要某些文件或者或者文件夹不参与热部署的配置,怎么办?
在application.yml文件中配置下列信息
devtools:
restart:
exclude: static/** , public/** ,config/application.yml
# /** 表示此目录下的所有文件
# config/application.yml 已经具体到哪个目录下的哪个文件
四、禁用热部署功能
第一种. 在application.yml文件中配置下列信息
devtools:
restart:
exclude: static/** , public/** ,config/application.yml
enabled: false
# /** 表示此目录下的所有文件
# config/application.yml 已经具体到哪个目录下的哪个文件
但是这种形式关闭热部署,优先级别太低,可能关闭之后,别人又从别的配置文件或者其他地方给打开了(在优先级别高的地方),从而导致热部署在此启动。
第二种:在优先级别高的地方禁用热部署
既然我们怕别人在优先级别高的地方启动热部署,那我们就在优先级别比较高的地方禁用热部署
首先我们先查看一下加载的优先级:
显然,application.yml配置文件在优先级为3的地方
那么,我们可以在优先级为6的地方禁用热部署功能
如下列代码:
@SpringBootApplication
public class Springboot12HotDisplayApplication {
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled","false");
SpringApplication.run(Springboot12HotDisplayApplication.class, args);
}
}