Springboot在idea中使用devtools热部署配置不生效的解决方法
一、背景介绍spring-boot-devtools是一个为开发者服务的模块,能够自动实现把更新的代码和配置更改到最新的应用上。其工作原理是:在发现代码或配置有更改后,自动重新启用应用。在devtools运行的时候,应用程序会被加载到java虚拟机中两个独立的类加载器中,一个ClassLoaderr加载Java代码、属性文件以及项目“src/main/”路径下几乎所有的内容,另一个ClassLoa
一、背景介绍
spring-boot-devtools是一个为开发者服务的模块,能够自动实现把更新的代码和配置更改到最新的应用上。其工作原理是:在发现代码或配置有更改后,自动重新启用应用。在devtools运行的时候,应用程序会被加载到java虚拟机中两个独立的类加载器中,一个ClassLoaderr加载Java代码、属性文件以及项目“src/main/”路径下几乎所有的内容,另一个ClassLoader加载依赖的库。当devtools探测到变更时,只会重新加载包含项目代码的类加载器,并重启spring的应用上下文;在这个过程中,另外一个类加载器原封不动。
二、maven的pom文件添加依赖
2.1 添加devtools依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true,依赖不会往下传递,如果有项目依赖本项目,并且想要使用devtools,需要重新引入 -->
<optional>true</optional>
<scope>runtime</scope>
</dependency>
2.2 修改build属性中插件配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 如果没有该项配置,devtools不会起作用,即应用不会restart -->
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
如果是Eclipse,配置到这里,那么只要重启服务,热部署就会生效了。但是,IDEA热部署还不会生效,因为devTools只会在类路径上的文件发生更改时才会自动重启,而IDEA默认不会自动编译。
三、Idea编辑器处理方法
第一步:开启自动编译。
按照preference->Build,Execution,Deployment->compiler路径,打开compiler配置面板,选中“Build project automatically”。如图:
第二步:按Ctrl+Shift+Alt+/快捷键,选择Registry条目,如下图
第三步:在第二步弹出的选相框中,勾选 compiler.automake.allow.when.app.running,如下图:
至此,Springboot在idea中使用devtools热部署配置就生效了。
更多推荐
所有评论(0)