标签:文件 01 SpringBoot 重启 修改 devtools ClassLoader 加载
devtools工具包,操作简单,但是每次需要重新部署。
1、原理
深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载那些会改变的类,成为restart ClassLoader,这样在有代码改变的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相对比较少,所以实现了较快的重启事件。
2、开始配置
(1)在pom.xml中添加依赖
<!--devtools热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
注意:
- devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false实现),实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。即devtools会监听classpath下的文件变动,并且会立即重启应用(当我们保存的时候)。因为采用的是虚拟机机制,该项重启很快
*配置了true后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登录的话,该项目重启后需要重新登录。 - 默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。
(2)devtools的配置
在application.yml中配置devtools
(3)Idea中的配置
当我们修改了类文件后,idea不会自动编译,得修改idea设置
- File-Settings-Compiler-Build Project automatically
- ctrl + shift + alt + /, 选择Registry打开,勾上Compiler autoMake allow when app running
(4)测试
修改类 -> 保存: 应用重启
修改配置文件 -> 保存:应用会重启
修改页面 -> 保存:应用不会重启,但会重新加载,页面会刷新
标签:文件,01,SpringBoot,重启,修改,devtools,ClassLoader,加载 来源: https://www.cnblogs.com/morehair/p/15416244.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。