SprigBoot 的热部署方式分为两种:
1)SpringLoader 插件
2)DevTools 工具
1. SpringLoader插件
插件的使用又可以分为两种方式
1.1 以 maven 插件方式使用 SpringLoader
使用步骤:
1)添加插件
<!-- springloader 插件 -->
<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.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
注意:对于maven插件,一旦在pom中配置了插件,那么对于这个插件的启动,必须要依赖于maven的命令才能生效。
2)使用maven命令启动项目
该命令是:spring-boot:run
然后我们做测试,发现修改java代码之后,代码生效了,但是页面没有生效,如图;
理想中的结果是界面也输出showUser xxx才对,所以,我们可以知道该方式存在一个缺陷:
就是可以对 Java 代码做热部署处理。 但是对页面无能为力。
我们将服务关掉,重新运行,发现会报端口占用错误,我们明明关闭了服务,为什么还会报这个错误了,这是因为,使用该插件是在后台开启一个进程来完成的,所以,我们还需要手动关闭该进行才行,从而又引出了该插件的另一个缺陷问题;
Springloader 热部署程序是在系统后台以进程的形式来运行。 需要手动关闭该进程,比较麻烦。
如图:
关闭之后,再次启动,就不会报错了。
1.2 在项目中直接使用 jar 包的方式
1)添加springloaded.jar
新建一个lib目录,将springloader的jar放进去,如图;
2)启动项目的时候设置参数
-javaagent:.\lib\springloaded-1.2.5.RELEASE.jar -noverify
如图:
在启动类中,右键,run as - run configuration
然后在VM arguments中加入参数命令
运行即可。
注意:该方式一样的,也是对页面无能为力。但是,不需要我们手动关闭进程了。
2. DevTools 工具
2.1 SpringLoader 与 DevTools 的区别
SpringLoader: SpringLoader 在部署项目时使用的是热部署的方式。
DevTools: DevTools 在部署项目时使用的是重新部署的方式
2.2 使用步骤
直接添加坐标接
<!-- DevTools 的坐标 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
注意:<optional>true</optional>的意思是,当其他项目继承该pom的时候,如果dependency加上了该配置,表示,当前依赖禁止向下传递。
然后,我们就可以随意的修改我们的代码,代码会自动的重新发布了