成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Spring Boot 2.0 外部化配置介紹

lmxdawn / 2236人閱讀

摘要:可以使用外部化配置來(lái)方便在不同環(huán)境的運(yùn)行同樣的程序文件文件環(huán)境變量命令行參數(shù)內(nèi)置順序?qū)崿F(xiàn)了很多按以下順序進(jìn)行合理的相同屬性的覆蓋目錄下的全局設(shè)置屬性,如果激活測(cè)試用例上的注解測(cè)試用例上的注解。

簡(jiǎn)介
在應(yīng)用中管理配置并不是一個(gè)容易的任務(wù),尤其是在應(yīng)用需要部署到多個(gè)環(huán)境中時(shí)。通常會(huì)需要為每個(gè)環(huán)境提供一個(gè)對(duì)應(yīng)的屬性文件,用來(lái)配置各自的數(shù)據(jù)庫(kù)連接信息、服務(wù)器信息和第三方服務(wù)賬號(hào)等。通常的應(yīng)用部署會(huì)包含開(kāi)發(fā)、測(cè)試和生產(chǎn)等若干個(gè)環(huán)境。不同的環(huán)境之間的配置存在覆蓋關(guān)系。測(cè)試環(huán)境中的配置會(huì)覆蓋開(kāi)發(fā)環(huán)境,而生產(chǎn)環(huán)境中的配置會(huì)覆蓋測(cè)試環(huán)境。Spring 框架本身提供了多種的方式來(lái)管理配置屬性文件。Spring 3.1 之前可以使用 PropertyPlaceholderConfigurer。Spring 3.1 引入了新的環(huán)境(Environment)和概要信息(Profile)API,是一種更加靈活的處理不同環(huán)境和配置文件的方式。不過(guò) Spring 這些配置管理方式的問(wèn)題在于選擇太多,讓開(kāi)發(fā)人員無(wú)所適從。Spring Boot 提供了一種統(tǒng)一的方式來(lái)管理應(yīng)用的配置,允許開(kāi)發(fā)人員使用屬性文件、YAML 文件、環(huán)境變量和命令行參數(shù)來(lái)定義優(yōu)先級(jí)不同的配置值。

Spring Boot 可以使用外部化配置來(lái)方便在不同環(huán)境的運(yùn)行同樣的程序

properties 文件

YAML 文件

環(huán)境變量

命令行參數(shù)

內(nèi)置順序

Spring Boot 實(shí)現(xiàn)了很多PropertySource,按以下順序,進(jìn)行合理的相同屬性的覆蓋:

home目錄下的devtools全局設(shè)置屬性(~/.spring-boot-devtools.properties,如果devtools激活)

測(cè)試用例上的@TestPropertySource注解.

測(cè)試用例上的@SpringBootTest#properties注解。

命令行參數(shù)

來(lái)自SPRING_APPLICATION_JSON的屬性(環(huán)境變量或系統(tǒng)屬性中內(nèi)嵌的內(nèi)聯(lián)JSON)

ServletConfig初始化參數(shù).

ServletContext初始化參數(shù).

來(lái)自于java:comp/env的JNDI屬性.

Java系統(tǒng)屬性 (System.getProperties()).

操作系統(tǒng)環(huán)境變量.

RandomValuePropertySource,只包含random.*中的屬性.

jar包或者war包之外Profile-specific應(yīng)用屬性(application-{profile}.properties和YAML變量).

Jar包內(nèi)的的Profile-specific應(yīng)用屬性 (application-{profile}.properties and YAML 變量).

Application properties outside of your packaged jar (application.properties and YAML 變量).

Application properties packaged inside your jar (application.properties and YAML 變量).

配置在@Configuration 類(lèi)上@PropertySource 注解.

SpringApplication.setDefaultProperties 指定的默認(rèn)屬性

Note:

以上是Spring-Boot內(nèi)部的默認(rèn)順序,并不是絕對(duì)順序,實(shí)際擴(kuò)展的時(shí)候需要注意順序問(wèn)題,后續(xù)我會(huì)在實(shí)踐篇去說(shuō)明這個(gè)。

Spring Boot 1.5 vs 2.0 變化

Relaxed Binding(寬松綁定規(guī)則)

屬性源綁定規(guī)則

Property Note
acme.my-project.person.first-name 建議在 .properties and .yml 文件中使用.
acme.myProject.person.firstName 標(biāo)準(zhǔn)的駝峰命名
acme.my_project.person.first_name 下劃線(xiàn)命名, .properties and .yml 文件中使用.
ACME_MYPROJECT_PERSON_FIRSTNAME 大寫(xiě)下劃線(xiàn)命名, 在環(huán)境變量中使用.

注意

在盡可能的情況下,請(qǐng)使用小寫(xiě)的短橫線(xiàn)命名的方法會(huì),比如: my.property-name=acme

在注解@ConfigurationProperties中定義或者在@ConditionalOnProperty的時(shí)候?qū)傩悦?strong>前綴的時(shí)候必須使用短橫分隔命名,并且必須小寫(xiě),只有注解中命名的時(shí)候必須遵守這個(gè)命名規(guī)則。我發(fā)現(xiàn)有些文章描述這個(gè)變化是不準(zhǔn)確的,并不是所有情況下都是需要這樣,比如我可以在配置文件中使用上述表格中的命名方式。

RelaxedPropertyResolver 類(lèi)解析工具被刪除掉,由Environment類(lèi)代替

RelaxedDataBinder 類(lèi)綁定工具類(lèi)被刪除掉,在2.0.0之后使用Binder類(lèi),如下使用方式

MyProperties target = Binder.get(environment)
        .bind("app.acme", MyProperties.class)
        .orElse(null);

FlagType flagType = Binder.get(environment)
        .bind("acme.app.my-flag", FlagType.class)
        .orElse(FlagType.DEFAULT);

在2.0之前的版本可以使用get/set方式注入靜態(tài)變量,2.0以后不再支持

@ConfigurationProperties Validation

如果在2.0之后的版本需要在@ConfigurationProperties配置的類(lèi)中使用驗(yàn)證必須使用@Validated注解

Configuration Location

spring.config.location 屬性在2.0之前的版本中會(huì)默認(rèn)增加一個(gè)新的文件目錄或者文件,在2.0的版本中,如果還要使用之前的功能,請(qǐng)使用spring.config.additional-location

參考

Spring Boot Reference Guide-2.0.3

Spring Boot Reference Guide-1.5.8

Spring Boot 2.0 Configuration Changelog

Relaxed Binding 2.0

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72075.html

相關(guān)文章

  • Spring Boot 配置文件中的花樣,看這一篇足矣!

    摘要:的默認(rèn)配置文件位置為。比如,我們需要自定義模塊的服務(wù)端口號(hào),可以在中添加來(lái)指定服務(wù)端口為,也可以通過(guò)來(lái)指定應(yīng)用名該名字在應(yīng)用中會(huì)被注冊(cè)為服務(wù)名。同時(shí),配置內(nèi)容都對(duì)開(kāi)發(fā)人員可見(jiàn),本身這也是一種安全隱患。 在快速入門(mén)一節(jié)中,我們輕松的實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的RESTful API應(yīng)用,體驗(yàn)了一下Spring Boot給我們帶來(lái)的諸多優(yōu)點(diǎn),我們用非常少的代碼量就成功的實(shí)現(xiàn)了一個(gè)Web應(yīng)用,這是傳統(tǒng)的...

    pingan8787 評(píng)論0 收藏0
  • Spring Boot 2.0 @ConfigurationProperties 使用

    摘要:引言的一個(gè)便捷功能是外部化配置,可以輕松訪(fǎng)問(wèn)屬性文件中定義的屬性。本文將詳細(xì)介紹的使用。 引言 Spring Boot的一個(gè)便捷功能是外部化配置,可以輕松訪(fǎng)問(wèn)屬性文件中定義的屬性。本文將詳細(xì)介紹@ConfigurationProperties的使用。 配置項(xiàng)目POM 在pom.xml中定義Spring-Boot 為parent org.springframework.boot...

    mating 評(píng)論0 收藏0
  • Dubbo Spring Cloud 重塑微服務(wù)治理

    摘要:在服務(wù)治理方面,相較于而言,并不成熟。遺憾的是,往往被部分開(kāi)發(fā)者片面地視作服務(wù)治理的框架,而非微服務(wù)基礎(chǔ)設(shè)施。因此,建議開(kāi)發(fā)人員將或者遷移為服務(wù)。因此,下一步需要將其配置服務(wù)遠(yuǎn)程。當(dāng)服務(wù)提供方啟動(dòng)后,下一步實(shí)現(xiàn)一個(gè)服務(wù)消費(fèi)方。 原文鏈接:Dubbo Spring Cloud 重塑微服務(wù)治理,來(lái)自于微信公眾號(hào):次靈均閣 摘要 在 Java 微服務(wù)生態(tài)中,Spring Cloud1 成為...

    wh469012917 評(píng)論0 收藏0
  • Dubbo Cloud Native 實(shí)踐與思考

    摘要:可簡(jiǎn)單地認(rèn)為它是的擴(kuò)展,負(fù)載均衡自然成為不可或缺的特性。類(lèi)似的特性在項(xiàng)目也有體現(xiàn),它是另一種高性能代理的方案,提供服務(wù)發(fā)現(xiàn)健康和負(fù)載均衡。 Dubbo Cloud Native 實(shí)踐與思考 分享簡(jiǎn)介 Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Native Computing Foundation)項(xiàng)目蓬勃發(fā)展之際。Dubbo...

    邱勇 評(píng)論0 收藏0
  • Spring Boot 2.0 整合 Thymeleaf 模塊引擎

    摘要:如果還在使用以前的版本,想要使用非嚴(yán)格的,需要做以下配置在中引入依賴(lài)在中配置更多屬性配置請(qǐng)參考中模塊的屬性介紹。這樣的話(huà)很好的做到了前后端分離。 本文首發(fā)于:https://y0ngb1n.github.io/a/5... 開(kāi)發(fā)環(huán)境 org.springframework.boot spring-boot-starter-parent 2.1.0.RELEASE ...

    CoreDump 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<