从零开始学springboot笔记(四)-Spring boot之热部署之Springbootdevtools(工作中使用)

一、添加devtools依赖包

    <!-- springbootdevtools依赖包 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
      <scope>true</scope>
    </dependency>    

二、添加maven-plugin配置

<build>
      <plugins>
          <!-- springloaded配置
          <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin </artifactId>
                 <dependencies>  
               <dependency>  
                   <groupId>org.springframework</groupId>  
                   <artifactId>springloaded</artifactId>  
                   <version>1.2.4.RELEASE</version>
               </dependency>  
            </dependencies>  
            <executions>  
               <execution>  
                   <goals>  
                       <goal>repackage</goal>  
                   </goals>  
                   <configuration>  
                       <classifier>exec</classifier>  
                   </configuration>  
               </execution>  
               </executions>
        </plugin>
         -->
         
        <!--添加spring-boot-maven-plugin: -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                  <!--fork :  如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart -->
                <fork>true</fork>
            </configuration>
        </plugin>
      </plugins>
  </build>

这样就可以测试了,

说明:

1. devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。
2. devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(这里注意不同的模板配置不一样)

测试方面:

修改类-->保存:应用会重启
修改配置文件-->保存:应用会重启
修改页面-->保存:应用会重启,页面会刷新(原理是将spring.thymeleaf.cache设为false)

新增类-->应用重启

如果不能使用,请参考以下原因:

对应的spring-boot版本是否正确,这里使用的是1.4.1版本;
是否加入plugin以及属性<fork>true</fork>
Eclipse Project 是否开启了Build Automatically(我自己就在这里栽了坑,不知道为什么我的工具什么时候关闭了自动编译的功能)。
如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。

修改了方法的返回值,是能够进行热部署的;
重新创建了一个方法,是能够进行热部署的;
重新创建了一个Class,是能够进行热部署的

原文地址:https://www.cnblogs.com/xh_Blog/p/10985668.html