前言

因为之前使用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. jsp页面从标签属性中获取值

    你还可以在"data-*" 属性里使用json语法,例如 <div id="awesome-json" data-awesome='{"game ...

  2. html中的title和alt

    alt是html标签的属性,而title既是html标签,又是html属性. title标签这个不用多说,网页的标题就是写在<title></title>这对标签之内的.tit ...

  3. Python-常用第三方库

    python常用框架及第三方库(转载) 一.Web框架 1.Django: 开源web开发框架,它鼓励快速开发,并遵循MVC设计,比较庞大,开发周期短.Django的文档最完善.市场占有率最高.招聘职 ...

  4. .Net Core部署到CentOS

    本文基于初次或再次尝试部署.Net Core应用到Linux服务器上,我尝试后自我总结的经验一个简单的Demo,尝试部署在Linux服务器上和跨服务器访问数据库. 一.环境介绍 1.本地使用Visua ...

  5. echo 0000

    一个奇怪的问题,正常状态下如果sql插入失败,则输出0000,代码如下: $stmt=$db->prepare("insert into message(user,title,cont ...

  6. Func常用模块及API

    Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...

  7. H5WebSocket前后台代码

    1.效果图 2.后台代码: public void Demo() { //return "Hello World"; HttpContextBase content = this. ...

  8. linux下安装phpunit简单方法

    现在安装phpunit相当简单,只需要下载phar压缩格式的phpunit文件,给个执行权限,就可以执行了 以下是一段官方安装文档 wget https://phar.phpunit.de/phpun ...

  9. BZOJ 3884: 上帝与集合的正确用法 [欧拉降幂]

    PoPoQQQ大爷太神了 只要用欧拉定理递归下去就好了.... 然而还是有些细节没考虑好: $(P,2) \neq 1$时分解$P=2^k*q$的形式,然后变成$2^k(2^{(2^{2^{...}} ...

  10. 【原创】 c#单文件绿色资源自更新

    先引用dnlib.dll 更新程序先fody成一个文件 放置主程序资源文件 更新程序.exe #region using System; using System.Diagnostics; using ...