SpringBoot 热部署方式

来源:互联网 发布:linux的ftp权限设置 编辑:程序博客网 时间:2024/05/17 08:52

原则上只要我们修改了代码  那么我们就必须重新启动才可以 这样做的效率会大大降低  如果在我们修改代码后自动生效呢 

这里就需要我们进行热部署   


1 首先在 pom.xml中 引入我们的插件  


<build>  <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>            <dependencies>            <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>
2 我们下载下来 springloaded-1.2.4.RELEASE.jar  放在本地的文件夹   我是在项目中创建一个lib目录放了进去 

3 在项目中 右键  run As --->run  Configurations...  

4 找到  Arguments 选项卡   在Vm arguments 中 写入  

-javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify

5 这个时候我们发现 修改了代码后 不需要重启 只要刷新浏览器即可  

那么现在问题又来了    修改原方法代码后虽然可以  但是当我们创建了一个新的方法  却无法访问到   这个时候我们也要解决这个问题  


接下来我们需要用spring-boot-devtools  里面有个重要的功能的是自动应用代码更改到App 

发现代码有改动之后重新启动,原理是使用两个Classloader ,一个加载了不会改变的类 也就是导入的jar包  

另一个加载会发生改变的类 而这个ClassLoader发现代码有变化则会释放掉原来的ClassLoader而创建一个新的重新来加载 

由于不用加载导入的jar包 只需要加载我们自己写的那些 所以启动速度更快了 

1 添加 依赖包 

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

2 之前的插件也需要修改一下 


  <build>  <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>       <configuration>       <fork>true</fork>       </configuration>    </plugin>  </plugins>  </build>

现在我们发现 添加了方法 而无需手动重启 也是可以访问的