springboot实现热部署
一、什么叫热部署
在实际开发中,我们做好的项目难免会出现一些问题,但是我们知道我们处理完这些问题后,我们需要重启一下服务器那么我们处理完问题后的项目才能生效(也就是说:修改了项目的代码后需要重启一下服务器然后修改后的项目才生效,不重启服务器的话要不然还是以前代码),因此这样每次修改项目问题的时候我们都要重启一次服务器在实际开发中是非常麻烦的,因此热部署就解决了这个问题,热部署可以在我们修改完项目代码后不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)
二、热部署开启方式
2.1、第一种:手动启动热部署
也就是说:导入devtools坐标后,每当我们的项目中修改代码后,我们不用再重启服务器了,我们直接将修改后的项目Build(Ctrl +F9)一下,就可以把修改后的项目部署到服务器中了(目的和重启服务器一样了)
热部署演示如下所示:
假设下面的代码是项目没有出问题前的代码(开启着服务器):
现在,我们在项目代码开启着服务器的状态下,我们发现我们的项目好像有一些小BUG,我们就想进行修改一些问题:
但是我们在不重启服务器的情况下,使用热部署一样能够达到重启服务器的目的,那么我们修改小BUG的代码就能生效了:
结果如下所示:
2.2、第二种:自动启动热部署
在第一种手动启动热部署方式中,我们知道每次我们修改项目的代码后,都需要我们Build一下,那么项目才会部署到服务器中,那么这样每次修改一次都需要Build一次是不是太麻烦了点,因此我们可以用第二种自动启动热部署的形式解决每次修改完项目代码后都需要Build的毛病
自动启动热部署步骤如下所示:
第一步:
第二步:在项目中按:CTRL + ALT + SHIFT + / 找到Registry点击
那么通过以上两个步骤热部署就自动启动成功了。
注意1:有的idea版本在项目中点击CTRL + ALT + SHIFT + / 无反应,那么就可以点击CTRL+SHIFT+A搜索Registry点击进去找到上面的那个key在后面勾上对勾即可
如果点击进去后,发现没有compiler.automake.allow.when.app.running,那么就需要我们去这个地方进行勾选:
但是自动启动热部署的激活方式如下所示(修改完项目代码之后,需要在前端页面点击某个功能,才能激活启动热部署):
三、热部署范围配置
我们知道在项目当中,我们使用热部署后,在项目中修改代码后不再重启服务器,那么这个修改后的项目代码也能部署到服务器当中,同理我们的端口号配置也是一样的,当我们设置好热部署后,在不重启服务器的情况下修改端口号,那么这个修改后的端口号通过热部署是能生效的(客户端就需要访问修改后的端口号才能访问资源),
但是我们如何让一些文件或者文件夹里面修改过代码后,不进行热部署呢(让这些修改过的代码需要重新重启服务器才能生效)
需要我们在springboot的配置文件中加入一些排除热部署的属性:
四、关闭热部署功能
第一种: 在application.yml文件中配置下列信息
把enabled设置为false即可关闭热部署功能
devtools:
restart:
exclude: static/** , public/** ,config/application.yml
enabled: false
# /** 表示此目录下的所有文件
# config/application.yml 已经具体到哪个目录下的哪个文件
第二种:在优先级别高的地方禁用热部署
既然我们怕别人在优先级别高的地方启动热部署,那我们就在优先级别比较高的地方禁用热部署
首先我们先查看一下加载的优先级:
显然,application.yml配置文件在优先级为3的地方
那么,我们可以在优先级为6的地方禁用热部署功能
在springboot启动类当中输出 System.setProperty("spring.devtools.restart.enabled","false");即可关闭热部署功能
@SpringBootApplication
public class Springboot12HotDisplayApplication {
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled","false");
SpringApplication.run(Springboot12HotDisplayApplication.class, args);
}
}
更多推荐
所有评论(0)