IdeaSpring项⽬配合SpringLoader或DevTools实现热部署Idea实现热部署有两种⽅式,互为补充。
⼀. SpringLoader热部署
只能做代码热部署,不能做静态资源热部署。静态资源包括但不限于: html,css,js。SpringLoader做热部署 时有两种配置⽅式。
1. 使⽤插件启动
在maven的l中添加对应的依赖
<build>
<plugins>
<!-- 想要使⽤springloader插件,⾸先必须有⼀个main⽅法,也就是应⽤的主⼊⼝-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
</dependencies>
<configuration>
<!-- main启动类的全路径 -->
<mainClass>loader.AppStarter</mainClass>
</configuration>
</plugin>
</plugins>
</build>
其中,mainClass的路径可以不指定,但spriongloaded的依赖⼀定要写,否则只凭借spring-boot-maven-plugin中的spring-boot-loader⽆法完成热部署的功能。
接着,在插件中通过spring-boot:run 来启动应⽤,即可实现热部署功能。(不能直接通过主类启动)
2. 通过代码依赖外部 jar启动
在Run/Debug Configuration-> VM options中添加内容并启动即可实现热部署:
-javaagent:.\libs\springloaded-1.2.8.RELEASE.jar -noverify
注意,jar包不需要add to build path。
3. 注意
Idea并没有像eclipse那样默认⾃动编译⽂件,因此需要⼿动开启,⽹上⼤部分⼈都说有两处:
1. Compiler -> Build project automatically 打钩
2. ctrl shift+A -> Registry -> compiler.automake.allow.when.app.running 打钩
然⽽并没有⽤,我的Idea是2019.1,亲测上述配置⽆效。因此退⽽求其次,录制了⼀套保存+编译的宏命令,并设置快捷键为ctrl+s,每次修改⼀个类后,⼿动ctrl+s进⾏编译。
宏的定义如下图所⽰:
⼆. DevTools
既可以做代码热部署,也能做静态资源热部署。当实现代码热部署时,需要与springloaded搭配使⽤。引⼊springloaded的⽅式请参考前⽂,下⾯是DevTools集成⾄spring boot的⽅式:
⾸先,在maven的l中引⼊DevTools依赖
idea debug<!-- devtools依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- ⼦⼯程继承当前⼯程的时候,此依赖不会向下传递 -->
<optional>true</optional>
</dependency>
接着,在application.properties全局配置⽂件中,增加对DevTools的配置:
# DevTools热部署⽣效
abled=true
# 设置⽂件内容发⽣变化时需要重启服务的路径如果路径有多个,⽤英⽂逗号分隔
start.additional-paths=src/main/java
# 设置⽂件内容发⽣变化时不需要重启服务的路径
# 注意: 默认不重启服务的路径有: /META-INF/maven, /META-INF/resources,/resources,/static/templates,/public
# 不重启服务,但还是会重新加载静态内容!也即,静态资源的热部署还是有效的
lude=WEB-INF/**
⾄此,针对DevTools做热部署的⼯作就已经完成了。
与单纯使⽤springloaded不同的是,使⽤DevTools时,spring boot会分出名为"restartedMain"的线程去监听.class⽂件,如果发现有⽂件被修改,则会重启服务(在控console中能看到Spring上下⽂重启的相
关信息)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论