同樣的應用代碼,發佈到不同的環境,這就是Springboot的解決方案

Spring Boot允許您將配置外部化,這樣就可以在不同的環境中使用相同的應用程序代碼。您可以使用屬性文件、YAML文件、環境變量和命令行參數來配置應用。屬性值可以使用@Value註釋直接注入到bean中,可以通過Spring的環境訪問,也可以通過註釋@ConfigurationProperties綁定到結構化對象。

Type-safe configuration properties(類型安全的配置屬性)

使用@Value("${property.name}")註釋注入配置屬性有時會南預處理,特別是在處理多個屬性或數據本質上是有層次結構的情況下。Spring Boot提供了處理屬性的另一種方法,允許強類型bean管理和驗證應用程序的配置。

Relaxed binding

Spring Boot自動使用寬鬆的規則將環境相關屬性綁定到@ConfigurationProperties bean。也就是說,環境屬性名和bean屬性名之間不需要完全匹配。假設您有一個名為allowCredentials的bean屬性,您可以在屬性中使用以下配置。每一種配置都會配對成功。

allowCredentials: 使用標準的大小寫語法。

allow-credentials:使用虛線表示法。

allow_credentials:使用下劃線表示法。

ALLOW_CREDENTIALS: 使用大寫格式。


我們來看一個關於ConfigurationProperties的實例。

Spring Boot @ConfigurationProperties允許開發者輕鬆地將整個屬性文件映射到一個對象中。

在原本的spring框架中,我們使用@Value標註來逐個注入屬性值,如下圖所示:

同樣的應用代碼,發佈到不同的環境,這就是Springboot的解決方案

而通過使用@ConfigurationProperties,這將變得容易得多。這是一個簡單的屬性文件"application.properties":

同樣的應用代碼,發佈到不同的環境,這就是Springboot的解決方案

@ConfigurationProperties註釋有助於加載一系列相關屬性,比如在這個特定的例子中,由前綴"cmdb"命名。

Spring boot採用的方法是定義一個bean,它可以用這種方式保存所有相關屬性:

同樣的應用代碼,發佈到不同的環境,這就是Springboot的解決方案

在運行時,所有屬性都將被注入到相關的bean屬性中。

現在讓我們在應用程序加載後打印屬性:

同樣的應用代碼,發佈到不同的環境,這就是Springboot的解決方案

然後我們就可以在控制檯看到打印出來的在運行時加載的屬性了。有興趣的小夥伴可以嘗試在外部環境更改後多運行幾次,看看效果如何

同樣的應用代碼,發佈到不同的環境,這就是Springboot的解決方案


感興趣的各位請關注,關注的人越多,我就能寫得越好。


分享到:


相關文章: