原则上只要我们修改了代码 那么我们就必须重新启动才可以 这样做的效率会大大降低 如果在我们修改代码后自动生效呢
这里就需要我们进行热部署
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>
现在我们发现 添加了方法 而无需手动重启 也是可以访问的