zoukankan      html  css  js  c++  java
  • 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自动编译

    image

    上面的打勾之后,按下面的键

    windows:ctrl + alt + shift + /
    
    mac: command + alt + shift + /
     

    点击Registry,勾选compiler.automake.allow.when.app.running

    image

    image

    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、因为当前还是一个最简单的项目之下,没有很多包很多类,我不清楚当项目大了之后部署时间会不会变的特别长,还需进行测试。我的建议是,如果你有很多东西要一次性改,你就老老实实停了项目改就好了。反正不差这点时间。

  • 相关阅读:
    两数组相比筛选数据
    利用Cache防止同一帐号重复登录
    [转]post与get的区别
    巧妙运用SQL Server保护数据
    华为任正非:让一线呼唤炮火(续)
    ASP.NET到底该从哪开始学起?
    C# 4.0中泛型协变性和逆变性详解
    服装库存积压的解决路径
    Spring3 MVCx学习 skyCc
    Hibernate缓存(转述) skyCc
  • 原文地址:https://www.cnblogs.com/linkstar/p/8245480.html
Copyright © 2011-2022 走看看