springboot热部署(springloader和devtools)

注意:默认使用Maven项目。

springloader方式:首先在pom.xml中添加依赖

<!-- 构建节点 -->
  <build>
      <plugins>
          <!-- 在这里添加springloader plugin-->
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
              <dependencies>
                  <!-- springboaded hot deploy -->
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>springloaded</artifactId>
                      <version>1.2.4.RELEASE</version>
                  </dependency>
              </dependencies>
              <executions>
                  <execution>
                      <goals>
                          <goal>repackage</goal>
                      </goals>
                      <configuration>
                          <classifier>exec</classifier>
                      </configuration>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>

 

然后启动,启动有两个方式:

方式1:右键 -> run as --> Maven build ,在Goals中输入spring-boot:run  ,然后run 即可热启动,此种方式有一个缺点那就是停止服务后端口仍占用,必须在任务管理器中关闭进程。

 

方式2:下载所需jar包(spring-loader-1.2.4.RELEASE.jar),添加到项目。 在项目右键 run as --> Run configurations --> Arguments 中,设置VM arguments: -javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify

然后启动

springloader方式只对修改返回值有效,而对添加方法无效。

 

========================================================================

devtools方式:

首先添加依赖,

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        <scope>true</scope>
    </dependency>

然后添加plugin

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

 

然后启动即可。

原理是修改后服务会快速重启,深层原理是使用了两个classloader,一个classloader加载那些不会改变的类,另一个classloader加载会更改的类,成为restart Classloader。

这样代码有更改的时候,原来的restart Classloader被丢弃,重新创建一个restart Classloader,由于需要加载的类比较少,所以实现了较快的重启时间(5s以内)。

对于添加方法仍有效。

转载于:https://www.cnblogs.com/tang985663595/p/7327825.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值