1.使用热部署的原因:
就个人开发时体验而言,没有热部署时,每次修改点东西(也许只是个打印语句,或者一两个字符的改变),就得保存,然后停止服务,重新运行服务。虽然操作简单,但是修改的不多,却因为各种原因不停重复一套操作,很容易让人烦躁。
热部署后,方便很多,每次修改之后保存就行,它会帮我自动重启
2.原理:
使用spring-boot-devtools,它的原理就是重启项目,但比手动重启快多了,其深层原理是使用了两个ClassLoder,一个ClassLoader加载哪些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类.称之为restart ClassLoader,这样在有代码更改的时候,原来的restart Classloader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)
3.选择:
1.JRebel插件并非免费的,所以对于爱占便宜的我来说,想都不想就pass
2.spring loaded 使用起来还是有点麻烦
3.devtools 使用简单
所以,我当然选择了 devtools 喽
4.使用:
pom.xml 文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>true</scope>
<optional>true</optional>
</dependency>
plugin 的 spring-boot-maven-plugin 下面加上
<configuration>
<fork>true</fork><!--实现热部署-->
</configuration>
eclipse Project下面勾选上 Build Automatically
5.验证:
首先启动起来
这里 Controller 里有打印语句
调用:
控制台如下:
修改并保存后:
控制台自动重启
再次调用,结果如下
打印语句已经改变