一、spring-loaded
Maven依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
ps:据说此方法还需要手动编译(IDEA 【Ctrl + Shift + F9】 Eclipse【Ctrl + S】),请亲测!
下载springloaded-1.2.5.RELEASE.jar,地址:https://github.com/spring-projects/spring-loaded
把springloaded-1.2.5.RELEASE.jar放到tomcat的bin文件夹下
打开bin下的catalina.bat文件中“setlocal”关键字下添加如下参数:
set JAVA_OPTS=-javaagent:springloaded-1.2.5.RELEASE.jar -noverify双击Servers视图Tomcat v7.0 Server at localhost服务器,点Modules,去掉Auto reloading enabled 勾选。
二、spring-boot-devtools
1、在项目中添加Maven依赖 spring-boot-devtools
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional> <!-- 表示依赖不会传递,之后依赖该module的项目如需继续使用,则需要再次引入 -->
</dependency>
2、在总工程的pom.xml里修改plugin插件信息,添加 configuration
扩展配置 fork
、addResources
为 true;
<build>
<fileName>你自己的工程名字<fileName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
3、IDEA不生效,配置启用自动生成
4、IDEA不生效,按下 Ctrl+Shift+Alt+/
,找到Registry,找到compiler.automake.allow.when.app.running勾选
三、JRebel
Intellij热部署插件JRebel,项目需求,一直用eclipse的我,也要改用IDEA了,一开始,很不习惯,经过几天的慢慢摸索和习惯之后,发现IDEA确实很好用,dark的界面是我喜欢的,智能的提示也让写代码不再枯燥。
遗憾的是IDEA本身没有集成热部署工具,一开始改动代码之后,都需要重新run或者debug,让开发效率大打折扣。经过一段时间的搜寻,发现JRebel是一个很好的热部署工具,在此记一笔,作为备忘录。
安装和使用JRebel需要注意两点:激活和设置
1、安装JRebel
1、在IDEA中一次点击 File->Settings->Plugins->Brows Repositories
2、在搜索框中输入JRebel进行搜索
3、找到JRebel for intellij
4、install
5、安装好之后需要restart IDEA
2、激活JRebel
JRebel并非免费的插件,需要激活之后才能使用。
-
首先到github上去下载一个反向代理软件,我下载的是windows x64版本。
-
双击运行我们下载的程序
-
在IDEA中一次点击 File->Settings->JRebel 并找到激活界面(因为我的已经激活了,点击change liense进入的激活界面,记不清一开始怎么进入的了)
-
选择JRebel activated中的 connect to online licensing service
第一行输入 http://127.0.0.1:8888/d3545f42-7b88-4a77-a2da-5242c46d4bc2
第二行输入正确的邮箱格式,例如: test@123.com
再点击以下change liense 按钮验证激活
提示:d3545f42-7b88-4a77-a2da-5242c46d4bc2为UUID,可以自己生成,并且必须是UUID才能通过验证
-
最后别忘了把JRebel设置为offline模式 点一下work offline
3、相关设置
此时虽然安装好了JRebel并成功激活了,但是我们使用JRebel debug的时候,发现修改代码后,热部署不起作用。因为还需要设置两个地方
-
设置项目自动编译
-
设置 compiler.automake.allow.when.app.running
ctrl+shift+alt+/ 或者 help->find action…打开->搜索registry
找到 compiler.automake.allow.when.app.running 并✔
四、模板热部署
在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭模版引擎的缓存,如下:
Thymeleaf的配置:
spring.thymeleaf.cache=false
FreeMarker的配置:
spring.freemarker.cache=false
Groovy的配置:
spring.groovy.template.cache=false
Velocity的配置:
spring.velocity.cache=false
五、对比
方式 | 效果 |
---|---|
spring-loaded | 需手动编译 |
spring-boot-devtools | 会重新加载整个应用 |
JRebel | 只加载修改类(当有错误时不会)。无需手动编译,不会重新加载整个应用 |