1. 程式人生 > >springboot(2)——應用配置和熱部署

springboot(2)——應用配置和熱部署

《二》、應用配置和熱部署

一、application應用配置

Idea新建的專案預設配置檔案為application.properties

  • 1、我們修改它的字尾為application.yml,
    因為xx.yml格式檔案級聯寫法比較省事等
# application.yml啟用application-dev.yml開發配置
spring:
  profiles:
    active: dev

server:
  port: 8899
  • 2、新建application-dev.ymlapplication-prod.yml
    分別為開發和生產環境下的配置

二、資原始檔屬性配置

1、通過註解將配置檔案的值注入到java程式碼中

  • 1、在application.yml中
name: eric
age: 18

# 配置中使用當前配置
content: "name: ${name}, age: ${age}"
  • 2、java程式碼中註解繫結
// org.springframework.beans.factory.annotation.Value
@Value("${age}")
private Integer age;

@Value("${name}"
) private String name; @Value("${content}") private String content;

2、封裝成一個屬性物件

  • 1、在application.yml中配置一組物件屬性
person:
  name: eric
  age: 18
  • 2、PersonProperties.java類繫結配置物件屬性
@Data // lombok省略get和set
@Component // 使用時對應@Autowired註解
@ConfigurationProperties(prefix = "person")
public
class PersonProperties { private String name; private Integer age; }
  • 3、使用物件配置的值
@Autowired
private PersonProperties personProperties;
// 使用, personProperties.getName() + personProperties.getAge();

三、開發環境下熱部署

<!-- 熱部署 -->
<!-- devtools可以實現頁面熱部署(即頁面修改後會立即生效,
    這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false、
    spring.freemarker.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>

yml配置環境下如下:

  • 1、關閉freemarker模板快取

    spring.freemarker.cache = false

  • 2、熱部署生效

    spring.devtools.restart.enabled = true

  • 3、additional-paths指定目錄下更改檔案會啟動熱部署restart
spring:
    freemarker:
        cache: false
    devtools:
        restart:
            enabled: true
            additional-paths: /src/main/java
  • 4、建議更改資原始檔後手動重啟

參考連結

springboot學習筆記:7.IDEA下5步完成熱部署配置