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

前言

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

热部署

devtools

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

    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-devtoolsartifactId>
      <scope>providedscope>
      
      <optional>trueoptional>
    dependency>

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

springloaded

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

<plugin>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-maven-pluginartifactId>
          <dependencies>
            
            <dependency>
              <groupId>org.springframeworkgroupId>
              <artifactId>springloadedartifactId>
              <version>1.2.6.RELEASEversion>
            dependency>
          dependencies>
          <configuration>
            <mainClass>cn.springboot.MainspringbootmainClass>
          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
  • 由于使用IDE的不同,编译快捷键也可能不同,笔者实用intellij idea ,对应快捷键 Ctrl+Shift+F9,也可以设置自动编译(见这篇文章),eclipse 没记错的话是默认自动编译

参考文章

  • http://www.cnblogs.com/java-zhao/p/5502398.html
  • http://blog.csdn.net/u014695188/article/details/52262146

你可能感兴趣的:(Web开发)