SpringBoot热加载

39 篇文章 2 订阅
14 篇文章 2 订阅

使用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文件中添加依赖

<dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>springloaded</artifactId> 
      <version>1.2.4.RELEASE</version>
  </dependency> 

第二步:在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添加依赖

<!-- 热部署方法1spring boot devtools 依赖包. -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
           <scope>true</scope>
        </dependency>



<!-- 这是spring boot devtool plugin 热部署1常用-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                      <!--fork :  如果没有该项配置,这个devtools不会起作用,即应用不会restart -->
                    <fork>true</fork>
                </configuration>
            </plugin>

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

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值