SpringBoot+gradle+idea实现热部署和热加载
前言
因为之前使用myeclipes的同学就知道,在使用myeclipes的时候,java文件或者jsp文件写完之后会被直接热加载到部署的容器中,从而在开发的时候,不同经常去重启项目,从而达到了增加开发效率的目的。
但是现在切换到SpringBoot之后,因为没有外部容器的支持,而且使用gradle去构建项目,再加上idea默认不会自动编译的特性,最终导致开发项目的时候需要经常重启项目,这是我们不愿意看到的。
为了提高开发效率,我们下面将优化我们的SpringBoot模版。方案经过验证,可放心使用。
github地址:https://github.com/LinkinStars/springBootTemplate
方案说明
1、SpringBoot对于页面来说,已经实现了热加载,只是默认是关闭的,需要手动打开。
2、对于JAVA类来说,使用官方推荐的spring-boot-devtools
来实现热部署(这里是热部署并非热加载注意区别)
3、需要关闭页面的缓存,这里我使用的是Thymeleaf配置在后面说明。
详细的方案说明可以参考spring官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html
spring考虑是真的周到,我一开始都没发现文档中还有热部署相关的说明。
如何配置实现
1、在build.gradle文件根节点中加入
bootRun {
//开启页面热加载功能
addResources = true
}
2、在build.gradle文件dependencies下加入compile("org.springframework.boot:spring-boot-devtools")
3、开启IDEA自动编译
上面的打勾之后,按下面的键
windows:ctrl + alt + shift + /
mac: command + alt + shift + /
点击Registry,勾选compiler.automake.allow.when.app.running
4、配置thymeleaf.cache为false
thymeleaf:
cache : false
性能等情况说明
1、经过以上的配置之后,页面的修改不需要进行编译,修改马上就会有效果
2、Java类在修改之后会被重新编译,但是要注意的是,项目会重新进行部署,你可以从控制台看到信息。
3、但是经过测试,并不是整个项目重新进行部署,spring应该已经做过处理,所以重新部署的时间非常快,不会影响使用。
4、还有一种实现方案是使用:springloaded 据说是实现的热加载而非热部署,但是我经过实践之后发现在我的环境下并不能成功,没有效果,spring官方文档中还特别对SpringBoot+gradle+idea这样的环境使用springloaded做出了说明,但是我根据文档配置之后任然是不行,可能跟我本地环境有关,不过以上的配置可以满足我的需求,而且部署时间并不长,所以我选择使用了devtools
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html
5、令人开心还有,因为实现的是热部署,所以即使是XML文件的修改,比如MyBatis的SQL修改都会被热部署,也就是改什么就马上有用了。
6、因为当前还是一个最简单的项目之下,没有很多包很多类,我不清楚当项目大了之后部署时间会不会变的特别长,还需进行测试。我的建议是,如果你有很多东西要一次性改,你就老老实实停了项目改就好了。反正不差这点时间。
SpringBoot+gradle+idea实现热部署和热加载的更多相关文章
- Tomcat热部署和热加载
1.热部署与热加载 在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载.它们之间的区别是: (1).部署方式: 热部署在服务器运行时重新部署项目.热加载在运行时重新加载class. ( ...
- SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?
在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间:SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件 ...
- springboot热部署(一)——Java热部署与热加载原理
一.概述 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说, 热部署就是在服务器运行时重新部署项目,——生产环境 热加载即在在运行时重新加载class,从而 ...
- java的热部署和热加载
ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...
- 【Tomcat】tomcat热部署和热加载(转载)
我在项目开发过程中,经常要改动JAVA/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载: 1.热加载:在server.xml ...
- tomcat 和 jboss的热部署(热发布)问题
所谓的热部署(热发布)(下面称为“热部署”),就是说,在web工程发布之后,不可避免的,会遇到修改BUG的问题.现在的热部署就是为了解决这个问题,其功能就是说:在不停止web服务的同时,对jsp和Ja ...
- Tomcat热部署与热加载!
所谓的热部署与热加载就是两个值:(reloadable='true'与autoDeloy='true')
- 刚部署的程序加载不出来css,js以及图片
刚部署的程序加载不出来css,js以及图片,解决方式 需要在配置中加入静态资源 方法一: controller.xml中加入 <mvc:annotation-driven/> <mv ...
- django部署后样式加载不出来解决方案
django部署后样式加载不出来 1.html文件去掉<!DOCTYPE html> 2. location /static { alias /home/static/; } 3.STAT ...
随机推荐
- mysql数据库安装注意事项:
mysql数据库安装注意事项: https://jingyan.baidu.com/article/642c9d34aa809a644a46f717.html(安装教程) 注意语言设置为gbk可以解决 ...
- DispatcherServlet介绍
<property name="features"> <list> <value>WriteMapNullValue</value> ...
- Servlet 浅析
在我们学习Servlet之前,有必要了解一下Web容器的工作模式 我们所有的请求其实都是先到达了web容器,然后才分发给已经注册好的Servlet 请求由Servlet的service方法调用doGe ...
- 前端之基础css
一.anchor伪类,用于阅读文章. a:link(没有接触过的链接),用于链接常规状态 (末访问的链接)a:hover(鼠标放在链接上的状态) 用于产生视觉效果(已访问的链接)a:visited(访 ...
- MonogoDB 查询小结
MonogoDB是一种NoSQL数据库 优点: 1.数据的存储以json的文档进行存储(面向文档存储) 2.聚合框架查询速度快 3.高效存储二进制大对象 缺点: 1.不支持事务 2.文件存储空间占用过 ...
- 安装puppeteer
Puppeteer是一个node库,他提供了一组用来操纵Chrome的API,默认headless也就是无UI的chrome,也可以配置为有UI. 其实有点类似于PhantomJS,但Puppetee ...
- 前端开发-DOM
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...
- 使用Z3破解简单的XOR加密
使用Z3破解简单的XOR加密 翻译:无名侠 原文地址: https://yurichev.com/blog/XOR_Z3/ 如果我们有一段用简单XOR加密过的文本,怎么寻找密钥呢?密钥的长度可能很长, ...
- Mysql 查询重复的记录
我们都会使用distinct去除重复值,今天调试一个问题,业务需要查询出重复的数据,实现如下: 查询帖子的被哪些用户收藏,其中user_id,post_id可以唯一确定一条记录: 先使用post_id ...
- 为MySQL选择合适的备份方式[转]
原文链接:http://nettedfish.sinaapp.com/blog/2013/05/31/choose-suitable-backup-strategy-for-mysql/ 数据库的备份 ...