基于Maven的SpringBoot项目实现热部署的两种方式

来源:互联网 发布:java语言pdf 编辑:程序博客网 时间:2024/06/06 00:44

前言

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

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

结束语

这两种方式其实都是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 没记错的话是默认自动编译

参考文章

  • http://www.cnblogs.com/java-zhao/p/5502398.html
  • http://blog.csdn.net/u014695188/article/details/52262146
原创粉丝点击