前言

因为之前使用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. Linux上常用软件安装和总结

    Linux总结: 以前只顾着撸码,Linux这些一般都是运维玩的,然后也没怎么折腾过,每次上线也都只是发布下,最多也就是启停服务器.最近闲来无事就玩了玩Linux,还挺好的. 这里做一个总结来结束Li ...

  2. j2e应用概述

    过年也过完了,现在正式开始进入j2e的整理.现在开篇第一篇,整理一下j2e应用和开发环境.j2e应用提供的跨平台性,开放性已经各种远程访问的技术,为异构系统的良好整合提供了保证.注意这个是有一个异构系 ...

  3. linkin大话设计模式--观察者模式

    linkin大话设计模式--观察者模式 观察者模式定义了对象间的一对多依赖关系,让一个或者多个观察者观察一个对象主题.当主题对象的状态发生改变的时候,系统能通知所有的依赖于此对象的观察者对象,从而能自 ...

  4. 深入分析java传参

    概述      java中的参数传递问题可以根据参数的类型大致可以分为三类:传递基本类型,传递String类型,传递引用类型,至于最终是否可以归纳为值传递和引用传递,根据每个人的理解不同,答案不同,此 ...

  5. Nginx+Geoserver部署所遇问题总结

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 该问题的最终解决离不开公司大拿whs先生的指点,先表示感谢. ...

  6. scala 小结(一)

    Scala 是什么?(What is scala?)   引用百度百科对于scala的定义: Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编 ...

  7. [TFRecord文件格式]基本介绍

    标准TensorFlow格式 TFRecords 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords可以允许你讲任意的数据转换为TensorFlow所支持的格式, 这种方法可以 ...

  8. SpringMVC和Struts2的比较

    整体的框架机制     1.Struts2的入口是StrutsPrepareAndExecuteFilter,SpringMVC的入口是通过DispatcherServlet实现.     2.Str ...

  9. Linux 下编译安装xCache命令速记

    注意要先确保/path-to-php/bin/php-config存在下载链接: http://pan.baidu.com/s/1hqh5pDM #解压xcache源代码tar -zvxf xcach ...

  10. POJ 2007 Scrambled Polygon [凸包 极角排序]

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8636   Accepted: 4105 ...