1. 程式人生 > >Spring Boot 中application.yml與bootstrap.yml的區別

Spring Boot 中application.yml與bootstrap.yml的區別

yml與properties

其實yml和properties檔案是一樣的原理,且一個專案上要麼yml或者properties,二選一的存在。

推薦使用yml,更簡潔。

bootstrap與application

1.載入順序

這裡主要是說明application和bootstrap的載入順序。

  • bootstrap.yml(bootstrap.properties)先載入
  • application.yml(application.properties)後加載

bootstrap.yml 用於應用程式上下文的引導階段。

bootstrap.yml 由父Spring ApplicationContext載入。

父ApplicationContext 被載入到使用 application.yml 的之前。

2.配置區別

bootstrap.yml 和application.yml 都可以用來配置引數。

  • bootstrap.yml 可以理解成系統級別的一些引數配置,這些引數一般是不會變動的。
  • application.yml 可以用來定義應用級別的,如果搭配 spring-cloud-config 使用 application.yml 裡面定義的檔案可以實現動態替換。

使用Spring Cloud Config Server時,應在 bootstrap.yml 中指定:

  1. spring.application.name
  2. spring.cloud.config.server.git.uri
  3. 一些加密/解密資訊

例項:

bootstrap.yml

spring:
  application:
    name: service-a
  cloud:
    config:
      uri: http://127.0.0.1:8888
      fail-fast: true
      username: user
      password: ${CONFIG_SERVER_PASSWORD:password}
      retry:
        initial-interval: 2000
        max
-interval: 10000 multiplier: 2 max-attempts: 10

當使用Spring Cloud時,通常從伺服器載入“real”配置資料。為了獲取URL(和其他連線配置,如密碼等),您需要一個較早的或“bootstrap”配置。因此,您將配置伺服器屬性放在bootstrap.yml中,該屬性用於載入實際配置資料(通常覆蓋application.yml [如果存在]中的內容)。

當然,在一些情況上不用那麼區分這兩個檔案,你只需要使用application檔案即可,把全部選項都寫在這裡,效果基本是一致的,在不考慮上面的載入順序覆蓋的問題上。