天天看點

2、Spring-boot熱部署

什麼是熱部署:

簡單來說,就是你修改了代碼後,不需要重新啟動項目就可以在浏覽器上直接顯示你修改後的效果。
           

·第一種方法(在spring-boot:run時才有效)

我在實驗的時候,在修改傳回值,添加新方法,添加新類同時添加新方法, 都可以實時傳回新值。

但是在添加一個新的controller的時候是不成功的

<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>
           

·第二種方法

在pom.xml中添加

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-devtools</artifactId>  
    <optional>true</optional>
    <!-- optional=true,依賴不會傳遞,該項目依賴devtools;之後依賴myboot項目的項目如果想要使用devtools,需要重新引入 -->  
</dependency> 
           

在pom.xml中添加

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <!-- "如果沒有該項配置,devtools不會起作用,即應用不會restart",有人這麼說,有人說不弄也行,我沒有試過,加上不就得了,沒必要瞎折騰 -->
        <fork>true</fork>
    </configuration>
</plugin>
           

異常處理:

如果不能使用的話,以下就是幾種常見的解決方法:

1、看對應的spring-boot-starter-parent版本是否正确。我在運作的時候就抛出App.main異常,更換依賴管理的版本後就好了。換一個更高版本的。

2、是否加入spring-boot-maven-plugin以及屬性true

3、Eclipse Project 是否開啟了Build Automatically(開啟自動編譯的功能)。

4、如果設定SpringApplication.setRegisterShutdownHook(false),則自動重新開機将不起作用。(這個我沒試過,百度上是這麼說的)

最後,這兩種方式springloader、devtools隻需要配置一種即可,建議使用devtools,可以支援更多的代碼熱部署

繼續閱讀