博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring boot热部署配置[转]
阅读量:5308 次
发布时间:2019-06-14

本文共 2354 字,大约阅读时间需要 7 分钟。

Spring boot热部署配置

转自https://www.zybuluo.com/weiys/note/1141626

 


使用spring boot时,修改类文件或资源文件时,需要重新启动应用才生效,而且一般应用重启消耗时间比较长,非常影响开发效率。这里提供了两种方案解决应用热部署的问题。

  1. 使用spring-boot-devtools模块
  2. 使用Jrebel工具
 

基于spring-boot-devtools的热部署

spring-boot-devtools是spring为开发者提供的支持spring boot应用热部署的模块,以提高开发效率,它的实现原理是提供两个ClassLoader,一个基类ClassLoader用于加载不改变的类(如第三方jar包),另一个重启类ClassLoader用于加载应用中会变化的Class。当应用程序重新启动时,重启动类ClassLoader将被丢弃并创建一个新的ClassLoader。这种方法意味着应用程序重新启动会比较快,因为基类加ClassLoader已经可用并且不会重新启动。 

 

pom.xml配置

pom.xml引入spring-boot-devtools依赖

org.springframework.boot
spring-boot-devtools
true

pom.xml的plugins节点增加spring-boot maven插件配置

org.springframework.boot
spring-boot-maven-plugin
true
 

热部署配置

在application.yml的spring节点增加以下配置

spring:        devtools:        restart:            enabled: true                               # 热部署开关,false即不启用            exclude: static/**,public/**,templates/**   # 排除指定目录        additional-paths: src/main/java                 # 指定热部署目录

配置项说明如下: 

enabled:热部署启用开关,true:启用;false:不启用。 
exclude:配置不触发热部署的目录,也就是该目录下的文件修改不会导致restart。 
additional-paths:指定热部署的目录,如该目录的文件内容修改了,会自动restart。

这里配置的热部署目录是java类文件所在路径,将静态资源下的目录排除,也就是只有src/main/java目录下的文件修改才会触发热部署,其它目录修改都不会触发热部署。如果静态资源是放在resources目录下的话,最好还是放在additional-paths中,否则修改了静态资源文件也不会触发热部署。 

如果是使用Thymeleaf模板引擎的话,需要将缓存去年,否当修改了视图页面的话,刷新页面也不会生效,这是因为spring boot中对模板引擎编译结果进行了缓存。在application.yml增加如下配置,即可去掉缓存:

spring:    thymeleaf:        cache: false
 

Idea配置

修改了代码需要编译后才会生效,idea默认是不开启自动编译选项,需要手工开启自动编译,开启方式如下: 

File->Settings->Build,Execution,Deployment->Compiler 
将Build project automatically选项勾选上。 
配置自动编译
当应用是在running或者debugging模式下运行时,开启了该选项还不能自动编译,还需要修改Registry,通过Ctrl+Shift+Alt+/快捷键,打开Registry. 
Registry.png-5.2kB 
在Registry配置界面找到compiler.automake.allow.when.app.running配置项,将其value勾选上。 
Registry2.png-36kB

 

基于Jrebel的热部署

虽然说基于spring-boot-devtools的热部署方案可以解决掉手动重启的麻烦,也比手动重启快的多,但是毕竟也要重新加载全部的应用代码,还是觉得比较耗时。这里再介绍另一种方案,使用Jrebel工具。 

Idea安装方式: 
1、离线安装:Idea的Jrebel插件地址: 
2、在线安装:在idea插件管理搜索jrebel,在线安装。 
Jebel插件.png-44kB 
安装后重启Idea,在工具栏中看到下图中这几个图标说明已经安装成功。 
Jrebel.png-4.1kB 
Jrebel和Idea一样,也提供两种启动模式,Run和Debug模式。使用了Jrebel工具启动应用的话,就会禁掉spring-boot-devtools。在Idea中修改类文件或者静态资源文件,直接按“Ctrl+F9”,Jrebel就会重新加载修改的类文件,然后刷新浏览器就可看到修改的代码已生效。

Jrebel只重新加载修改过的类文件,没有修改的类不会重新加载,比spring-boot-devtools重新加载快的多。

转载于:https://www.cnblogs.com/awei4home/p/9171757.html

你可能感兴趣的文章
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>