SpringBoot热加载

使用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按如下进行设置:

  1. 由于JRebel是实时监控class文件的变化来实现热部署的,所以在idea环境下需要打开自动变异功能才能实现随时修改,随时生效。
    在这里插入图片描述
  2. 打开运行时编译

设置compiler.automake.allow.when.app.running

快捷键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这种方式可以实现大部分代码的热部署,但是和数据库连接池有冲突,容易造成数据库连接池关闭

你可能感兴趣的:(Java,微服务,SpringBoot,java)