热部署原理:
配置文件中用了spring-boot-devtools主要是因为这是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更快。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)
温馨提示:使用了热部署之后,千万不要频繁的进行ctrl+s(保存)操作,因为这样的话,就会自动进行部署重启了,这样会影响性能的哦~
步骤:
(1)pom.xml 添加依赖
<!--配置SpringBoot的热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork><!--注意要修改这里-->
</configuration>
</plugin>
(2)在 application.properties 配置文件中添加缓存禁止配置
#禁用缓存---要配置,否则无法生效
spring.thymeleaf.cache=false
spring.freemarker.cache=false
spring.groovy.template.cache=false
spring.velocity.cache=false
(3)修改 IDEA 的配置
1、按下Ctrl+Shift+A,在弹出的窗口中输入:make project automatically,输入完毕后回车会看到以下页面,根据图中指示勾上选项,完成后关闭窗口。
2、再按下Ctrl+Shift+A,在弹窗中输入:Registry,输入完毕后,鼠标选中跟下图所示一样的选项后并进行回车操作。
3、然后在出现的页面中,找到如下图所示的选项,在旁边的方框中进行勾选。该选项比较靠后,还是比较好找的。
(4)修改浏览器中的缓存禁止(以谷歌浏览器做代表,其他浏览器类似)
1、按下Ctrl+Shift+J,打开开发者功能(或者直接按下 F12 键也行),找到Network这一栏并点击。
2、再出现的页面中,勾选禁止缓存,如下图所示