1. 程式人生 > >Spring Boot 第26篇: Springboot整合devtools實現熱部署

Spring Boot 第26篇: Springboot整合devtools實現熱部署

構架工程

建立一個springboot工程,在其pom檔案加入:

<!-- 熱部署 -->
<!-- devtools可以實現頁面熱部署(即頁面修改後會立即生效,
這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false來實現) -->
<!-- 實現類檔案熱部署(類檔案修改後不會立即生效),實現對屬性檔案的熱部署。 -->
<!-- 即devtools會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機),
注意:因為其採用的虛擬機器機制,該項重啟是很快的 -->
<!-- (1)base classloader (Base類載入器):載入不改變的Class,例如:第三方提供的jar包。 --> <!-- (2)restart classloader(Restart類載入器):載入正在開發的Class。 --> <!-- 為什麼重啟很快,因為重啟的時候只是載入了在開發的Class,沒有重新載入第三方的jar包。 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>
spring-boot-devtools</artifactId> <!-- optional=true, 依賴不會傳遞, 該專案依賴devtools; 之後依賴boot專案的專案如果想要使用devtools, 需要重新引入 --> <optional>true</optional> </dependency>

新增配置

在application.properties配置檔案中加入:

#設定熱部署生效
spring.devtools.restart.enabled=true
#設定重啟的目錄,新增那個目錄的檔案需要restart
spring.devtools.restart.additional-paths=src/main/java #排除那個目錄的檔案不需要restart #spring.devtools.restart.exclude=static/**,public/** #classpath的目錄下的WEB-INF資料夾內容修改不重啟 #spring.devtools.restart.exclude=WEB-INF/**

測試程式碼

建立使用者實體:

package com.iisrun.pojo;

import java.util.Date;

public class User {

    private String name;
    private String password;
    private Integer age;
    private Date birthday;
    private String desc;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}

建立使用者controller:

package com.iisrun.controller;

import java.util.Date;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.iisrun.pojo.IMoocJSONResult;
import com.iisrun.pojo.User;

@RestController
@RequestMapping("/user")
public class UserContoller {

    @RequestMapping("/getUser")
    public User getUser() {
        User u = new User();
        u.setName("張三");
        u.setAge(18);
        u.setBirthday(new Date());
        u.setPassword("123456");
        u.setDesc("hello 張三~~");

        return u;
    }
}

測試熱部署是否生效

方法一:

專案啟動狀態,手動修改User物件的值,儲存後重新整理瀏覽器查詢熱部署是否生效。

方法二:

專案啟動狀態,手動修改User物件的值,儲存後檢視控制檯是否有restartedMain字樣的輸出。

以上程式碼均已測試通過。