專欄介紹
【秒懂·云原生】 目前主要更新微服務從0開始寫文件系統,一起學習一起進步。
本期介紹
主要介紹 Cloud 配置文件
文章目錄
默認配置文件
在創建 Boot項目時,會默認在文件夾下創建
.的屬性文件。在上面的例子中,我們在.中加上了服務啟動端口的配置,代碼如下所示:
屬性文件是最常見的管理配置屬性的方式。 Boot提供的類會搜索并加載.文件來獲取配置屬性值。類會在下面位置搜索該文件:
·當前目錄的"/”子目錄
·當前目錄
.中的"/"包
.
上面的順序也表示了該位置上包含的屬性文件的優先級。優先級按照從高到低的順序排列。可以通過..name配置屬性來指定不同的屬性文件名稱。還可以通過..來添加額外的屬性文件的搜索路徑。如果 Boot在優先級更高的位置找到了配置,那么它就會忽略低優先級的配置。
外部化配置
Boot所提供的配置優先級順序比較復雜。按照優先級從高到低的順序,具體的列表如下所示:
有些系統會涉及一些數據庫或其他第三方賬戶等信息,出于安全考慮,這些信息并不會提前配置在項目中。對于這種情況,可以在運行程序的時候通過參數指定一個外部配置文件的方式來解決。
以demo.jar為例,方法如下:
這里指定的外部文件名無固定要求,如果需要通過bash腳本來加載不同環境的外部配置文件,文件的命名可以參考-{env}.。
YAML
YAML是JSON的超集,是一種非常方便的格式,它一般用于指定分層配置數據。類能夠自動支持YAML,將其作為屬性文件的替代者。提供了兩個可用于加載YAML文檔的類:
yBean將YAML加載為; 將YAML加載為Map。如下面的屬性配置:
相應的YAML的配置如下:
從上面的對比可以看出YAML利于開發者閱讀,更易于實施和使用。
自動載入外部屬性到Bean
當@注解應用到@修飾的配置類時,任何被@ies注解的Bean將自動由配置。這種風格的配置特別適合與的外部YAML配置配合使用。
Boot使用相對寬松的規則來將環境屬性綁定到使用
@ies注解的Bean中,所以不需要環境屬性名稱和Bean屬性名稱完全匹配。Java中的屬性變量命名使用駝峰法,例如當屬性名定義為時,在配置文件中max-和都將會被映射到屬性。我們看幾個實例應用。
屬性實體類代碼如下:
在@ies中指明,定義實體的映射規則,可以簡化配置。這種配置方式支持復雜的屬性類型,如數組、Map和子對象等。
多
Boot使用為不同環境提供不同配置從0開始寫文件系統,可以和全局配合使用。
通過配置..指定激活某個具體的。除了使用..激活一個或者多個之外,還可以用..來疊加。如下所示:
spring. profiles.include: prod,dev
一個多的.yml配置如下所示:
spring:
profiles:
active: dev
#開發環境配置
spring:
profiles: dev
server:
port: 8080
#測試環境配置
spring:
profiles: test
server:
port: 8081
--
#生產環境配置
spring:
profiles: prod
server:
port: 8082
上述.yml文件分為四部分,使用一組(—)來作為分隔符。第一部分,通用配置部分,表示三個環境都通用的屬性,默認激活了dev的;后面三部分分別表示不同的環境,指定了不同的端口(port) 。
Boot應用通常會被打包成jar包部署到服務器中。在啟動jar應用時,可以加上參數–..=test指定應用加載哪個環境的配置。在IDEA中也可以直接指定應用啟動時激活哪個。
Boot項目的快速發展與流行,很大程度依賴于的出現。方便了各項依賴的集成,通過,可以在 Boot中獲取到所需相關技術的一站式支持(依賴、相關的自動配置文件和相關的Bean),而無需通過實例代碼和復制粘貼來獲取依賴。例如當需要中的Web支持時,可以通過引入-boot--web這個依賴,它將自動為項目配置一個內嵌的以及開啟的功能,下面是一些常用的:
更多的可以通過官方文檔查閱。大大簡化了開發者對相關依賴的配置,讓他們能夠將更多的精力放置在業務開發上,提高生產效率。