使用SpringBoot开发的时候,修改完程序之后,需要手动点击重启,才能让修改生效,比较麻烦,也占用了更多的时间。
其实可以通过一些插件,实现修改之后的热加载,并且只加载修改部分,从而也提高了效率。
方式一:使用JRebel
JRebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效。
IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费时间浪费生命。
目前对于idea热部署最好的解决方案就是安装JRebel插件。
第一步:安装插件
第二步:在线GUID地址:在线生成GUID
网址:在线GUID地址
如果失效刷新GUID替换就可以!
服务器地址:https://jrebel.qekang.com/{GUID}
第三步:打开jrebel 如下所示面板,选择Connect to online licensing service
安装成功之后就可以通过JRebel启动项目。这样修改完Java代码后,就可以通过快捷键 Ctrl+shift+F9 而不再需要重启站点这样繁琐浪费时间的操作了。
要想实现热部署,首先需要对Intellij按如下进行设置:
快捷键ctrl+shift+A,搜索:registry
或者
按快捷键 Ctrl+Shift+Alt+/ ,选择 Registry
运行项目时要点击图中红框中的按钮,即可运行:
第一个按钮是Run,第二个按钮是Debug。
修改代码(只测试了Java代码的修改)后,完成加载以后,就已经实现了热更新效果。
方式二:使用springloaded
第一步:pom文件中添加依赖
org.springframework
springloaded
1.2.4.RELEASE
第二步:在spring的启动配置里面
第三步:在VM options里面输入下面一段代码
-javaagent:F:\m2\mcms\repository\org\springframework\springloaded\1.2.8.RELEASE\springloaded-1.2.8.RELEASE.jar -noverify
格式: -javaagent: "jar包的位置" -noverify
编译之后修改的代码可以生效
方式三:使用spring-boot-devtools
第一步:pom.xml添加依赖
org.springframework.boot
spring-boot-devtools
true
true
org.springframework.boot
spring-boot-maven-plugin
true
application.yml配置文件中添加:
spring:
devtools:
restart:
#热部署生效
enabled: true
#设置重启的目录
#additional-paths: src/main/java
#classpath目录下的WEB-INF文件夹内容修改不重启
exclude: WEB-INF/**
设置WEB-INF下的jsp修改不需要重启。
当我们修改了java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:
这样就可以完成部署了。
上述三种热加载方式:
(1)jrebel需要在有网络的环境进行注册,无网环境配置稍显负载
(2)springloaded方式最简单,使用springloader这种方式,这并不是所有的代码都能够热部署的。
(3)使用devtools这种方式可以实现大部分代码的热部署,但是和数据库连接池有冲突,容易造成数据库连接池关闭