zoukankan      html  css  js  c++  java
  • 基于Maven的SpringBoot项目实现热部署的两种方式

    转载:http://blog.csdn.net/tengxing007/article/details/72675168

    前言

    JRebel是JavaEE中比较流行的热部署插件,可快速实现热部署,节省了大量重启时间,提高了个人开发效率。看一张图就知道了:这里写图片描述
    我这里提到JRebel的目的主要是说明热部署工具带来的优势:节省时间,提高开发效率 
    下面我将介绍使用maven构建的SpringBoot项目中实现热部署的两种方式,使得部署变得异常简单,同时两种方式也非常的简单。

    热部署

    devtools

    Pom.xml中直接添加依赖即可:

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <scope>provided</scope>
          <!--optional我没弄明白,都说必须为true,但我测试true,false,不加都可以-->
          <optional>true</optional>
        </dependency>

    通过项目主程序入口启动即可,改动以后重新编译就好。

    springloaded

    Pom.xml中直接在spring-boot插件中添加依赖即可:

    <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
              <dependencies>
                <!-- spring热部署 -->
                <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>springloaded</artifactId>
                  <version>1.2.6.RELEASE</version>
                </dependency>
              </dependencies>
              <configuration>
                <mainClass>cn.springboot.Mainspringboot</mainClass>
              </configuration>
            </plugin>

    运行:

    $ mvn clean spring-boot:run
    • 1

    改动后,编译即可实现热部署

    结束语

    这两种方式其实都是spring官网为了spring项目所推出的jar包,加之springBoot框架内嵌服务器的优势,使得改动后的项目部署变得非常简单;当我使用以后这两种方法以后,发现真正实现热部署的只是后者,前者只是实现了热启动而已,从控制台日志就可以看出来。

    说明

    • 项目使用maven管理,不然这篇简单实用的文章不适合你
    • 第一种方式配置文件改动后不能触发热启动
    • 第二种方式配置文件改动后不能触发热部署,会提示一下错误
    2017-05-24 11:54:53.276 ERROR 12063 --- [Loader@18b4aac2] org.springsource.loaded.ReloadableType   : Unable to find regeneration methods for cglib proxies - proxies will be out of date for this type
    • 1
    • 由于使用IDE的不同,编译快捷键也可能不同,笔者实用intellij idea ,对应快捷键 Ctrl+Shift+F9,也可以设置自动编译(见这篇文章),eclipse 没记错的话是默认自动编译

    参考文章

  • 相关阅读:
    python 字符串替换功能 string.replace()可以用正则表达式,更优雅
    windows 10 如何设定计划任务自动执行 python 脚本?
    win10 设定计划任务时提示所指定的账户名称无效,如何解决?
    pandas数据分析输出excel产生文本形式存储的百分比数据,如何处理?
    coinmarketcap前20之cardano卡尔达诺(ADA艾达币)
    【SpringMVC】参数绑定
    【SpringMVC】入门
    【Hibernate】 二级缓存及查询缓存
    【Hibernate】事务处理
    【Hibernate】抓取策略
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/8398300.html
Copyright © 2011-2022 走看看