知識庫 / Spring / Spring Boot RSS 訂閱

Spring 配置引導 vs 應用程序屬性

Spring Boot,Spring Cloud
HongKong
5
01:00 PM · Dec 06 ,2025

1. 概述

Spring Boot 是一種帶有指導意見的框架。儘管如此,我們通常會在應用程序配置文件(例如 application.properties)中覆蓋自動配置的屬性。

然而,在 Spring Cloud 應用程序中,我們通常會使用另一個配置文件,稱為 bootstrap.properties

在本快速教程中,我們將解釋 bootstrap.properties application.properties 之間的 差異

2. 應用配置文件的使用場景是什麼?

我們使用 <em >application.yml</em ><em >application.properties</em >> 來配置應用程序上下文。

當 Spring Boot 應用程序啓動時,它會創建一個不需要顯式配置的應用程序上下文——它已經實現了自動配置。但是,Spring Boot 提供了不同的方法來覆蓋這些屬性

我們可以通過代碼、命令行參數、<em >ServletConfig</em > 初始化參數、<em >ServletContext</em > 初始化參數、Java 系統屬性、操作系統變量和應用程序屬性文件來覆蓋這些屬性。

需要注意的是,這些應用程序屬性文件在覆蓋其他形式的應用程序上下文屬性時,優先級最低。

我們通常將可以覆蓋到應用程序上下文中的屬性分組:

  • 核心屬性(日誌屬性、線程屬性)
  • 集成屬性(RabbitMQ 屬性、ActiveMQ 屬性)
  • Web 屬性(HTTP 屬性、MVC 屬性)
  • 安全屬性(LDAP 屬性、OAuth2 屬性)

3. Bootstrap 配置文件何時使用?

我們使用 <em >bootstrap.yml</em><em >bootstrap.properties</em> 配置 bootstrap 上下文。 這樣我們就可以將 bootstrap 和主上下文的外部配置很好地分離開來。

bootstrap 上下文負責從外部源加載配置屬性,並對本地外部配置文件的屬性進行解密。

當 Spring Cloud 應用程序啓動時,它會創建一個 <em >bootstrap</em> 上下文。 記住的是,bootstrap 上下文是主應用程序的父上下文。

另一個需要記住的關鍵點是,這兩個上下文共享 <em >Environment</em>,這是任何 Spring 應用程序的外部屬性的來源。 與應用程序上下文不同,bootstrap 上下文使用不同的約定來定位外部配置。

配置文件的來源可以是文件系統,甚至可以是 Git 倉庫,例如。 服務使用 <em >spring-cloud-config-client</em> 依賴項來訪問配置服務器。

簡單來説,配置服務器是我們訪問應用程序上下文配置文件的入口點

4. 快速示例

在示例中,bootstrap上下文配置文件的作用是配置 spring-cloud-config-client 依賴項以加載正確的應用程序屬性文件。

以下是一個 bootstrap.properties 文件的示例:

spring.application.name=config-client
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=root
spring.cloud.config.password=s3cr3t
spring.cloud.config.fail-fast=true
management.security.enabled=false

5. 結論

與 Spring Boot 應用程序不同,Spring Cloud 應用程序具有作為其應用程序上下文父級的引導上下文。儘管它們都共享相同的 Environment,但它們在定位外部配置文件的約定不同。

引導上下文搜索 bootstrap.propertiesbootstrap.yaml 文件,而應用程序上下文則搜索 application.propertiesapplication.yaml 文件

並且,引導上下文的配置屬性在應用程序上下文的配置屬性之前加載。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.