前言

因为之前使用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实现热部署和热加载的更多相关文章

  1. Tomcat热部署和热加载

    1.热部署与热加载 在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载.它们之间的区别是: (1).部署方式: 热部署在服务器运行时重新部署项目.热加载在运行时重新加载class. ( ...

  2. SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?

    在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间:SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件 ...

  3. springboot热部署(一)——Java热部署与热加载原理

    一.概述 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说, 热部署就是在服务器运行时重新部署项目,——生产环境 热加载即在在运行时重新加载class,从而 ...

  4. java的热部署和热加载

    ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...

  5. 【Tomcat】tomcat热部署和热加载(转载)

    我在项目开发过程中,经常要改动JAVA/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载: 1.热加载:在server.xml ...

  6. tomcat 和 jboss的热部署(热发布)问题

    所谓的热部署(热发布)(下面称为“热部署”),就是说,在web工程发布之后,不可避免的,会遇到修改BUG的问题.现在的热部署就是为了解决这个问题,其功能就是说:在不停止web服务的同时,对jsp和Ja ...

  7. Tomcat热部署与热加载!

    所谓的热部署与热加载就是两个值:(reloadable='true'与autoDeloy='true')

  8. 刚部署的程序加载不出来css,js以及图片

    刚部署的程序加载不出来css,js以及图片,解决方式 需要在配置中加入静态资源 方法一: controller.xml中加入 <mvc:annotation-driven/> <mv ...

  9. django部署后样式加载不出来解决方案

    django部署后样式加载不出来 1.html文件去掉<!DOCTYPE html> 2. location /static { alias /home/static/; } 3.STAT ...

随机推荐

  1. 函数式编程--为什么会出现lambda表达式?

    java一直处在发张和演化的过程中,其中有2个版本从根本上改变了代码的编写方式.第一个就是JDK5之后增加的泛型,还有一个就是现在介绍的函数式编程,lambda表达式. lambda表达式是java8 ...

  2. Log4net使用详细说明

    1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual S ...

  3. MyEclipse中Lombok的安装及使用

    lombok是一款通过注解的形式简化我们必须有又显得臃肿的代码的工具.最常用的就是@Data注解.实体类上用了这个注解,实体类的各个属性就不需要书写get和set方法. 安装步骤: 1.关闭Myecl ...

  4. keepalived深度结合lvs_dr模式

    keepalived与dr模式结合 keepalived介绍 keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能), 这样可以简单 ...

  5. awk说明书(转)

    ref:http://blog.chinaunix.net/uid-429659-id-122573.html awk使用手册 作者:awk使用手册什么是awk? 你可能对UNIX比较熟悉,但你可能对 ...

  6. 图像映射<map>、<area>

    1.<map>定义图像映射,图像映射(image-map)指带有可单击区域的一幅图像. 2.<area>定义图像映射中的区域,area元素永远嵌套在map元素内部,area元素 ...

  7. Jmeter_24个常用函数(分享帖)

    JMeter提供了很多函数,如果能够熟练使用,可以为脚本带来很多方便. JMeter函数是一种特殊值,可用于除测试计划外的任何组件. 函数调用的格式如下所示:${__functionName(var1 ...

  8. 渗透测试,form对象类型转换,简单demo

    最近公司的项目在进行国家某行业的安全检测,涉及到项目安全渗透等方面的问题: 参与项目的渗透等改造,是一个机遇与挑战,今后对与项目安全等方面会思考更多: 下面说说form表单对象提交,为了防止抓包,后台 ...

  9. java for循环增强(foreach)

    for循环增强,在此之前还不知道foreach有这样的功能,先鄙视一下自己,留给自己看: 功能: ***若List用foreach : [  for(Student stu : list)  ]这种形 ...

  10. 单元测试系列:JUnit单元测试规范

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...