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標註來逐個注入屬性值,如下圖所示:
而通過使用@ConfigurationProperties,這將變得容易得多。這是一個簡單的屬性文件"application.properties":
@ConfigurationProperties註釋有助於加載一系列相關屬性,比如在這個特定的例子中,由前綴"cmdb"命名。
Spring boot採用的方法是定義一個bean,它可以用這種方式保存所有相關屬性:
在運行時,所有屬性都將被注入到相關的bean屬性中。
現在讓我們在應用程序加載後打印屬性:
然後我們就可以在控制檯看到打印出來的在運行時加載的屬性了。有興趣的小夥伴可以嘗試在外部環境更改後多運行幾次,看看效果如何
感興趣的各位請關注,關注的人越多,我就能寫得越好。
閱讀更多 覺猿 的文章
關鍵字: ConfigurationProperties 使用 代碼