国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Cloud 參考文檔(Spring Cloud Context:應(yīng)用程序上下文服務(wù))

魏明 / 3025人閱讀

摘要:它們的優(yōu)先級低于或以及作為創(chuàng)建應(yīng)用程序過程的正常部分添加到子級的任何其他屬性源。為引導(dǎo)配置類使用多帶帶的包名稱,并確保或注解的配置類尚未涵蓋該名稱。在這種情況下,它會在刷新時(shí)重建,并重新注入其依賴項(xiàng),此時(shí),它們將從刷新的重新初始化。

Spring Cloud Context:應(yīng)用程序上下文服務(wù)

Spring Boot有一個(gè)關(guān)于如何使用Spring構(gòu)建應(yīng)用程序的主見,例如,它具有通用配置文件的常規(guī)位置,并具有用于通用管理和監(jiān)控任務(wù)的端點(diǎn),Spring Cloud在此基礎(chǔ)上構(gòu)建并添加了一些功能,這些功能可能是系統(tǒng)中的所有組件都會使用或偶爾需要的。

Bootstrap應(yīng)用程序上下文

Spring Cloud應(yīng)用程序通過創(chuàng)建“bootstrap”上下文來運(yùn)轉(zhuǎn),該上下文是主應(yīng)用程序的父上下文,它負(fù)責(zé)從外部源加載配置屬性以及用于解密本地外部配置文件中的屬性,這兩個(gè)上下文共享一個(gè)Environment,它是任何Spring應(yīng)用程序的外部屬性來源。默認(rèn)情況下,bootstrap屬性(不是bootstrap.properties,而是在引導(dǎo)階段加載的屬性)以高優(yōu)先級添加,因此本地配置無法覆蓋它們。

bootstrap上下文使用與主應(yīng)用程序上下文不同的約定來定位外部配置,你可以使用bootstrap.yml而不是application.yml(或.properties),保持bootstrap和主上下文的外部配置很好地分開,以下清單顯示了一個(gè)示例:

bootstrap.yml
spring:
  application:
    name: foo
  cloud:
    config:
      uri: ${SPRING_CONFIG_URI:http://localhost:8888}

如果你的應(yīng)用程序需要來自服務(wù)器的任何特定于應(yīng)用程序的配置,則最好設(shè)置spring.application.name(在bootstrap.ymlapplication.yml中)。

你可以通過設(shè)置spring.cloud.bootstrap.enabled=false來完全禁用引導(dǎo)過程(例如,在系統(tǒng)屬性中)。

應(yīng)用程序上下文層次結(jié)構(gòu)

如果你從SpringApplicationSpringApplicationBuilder構(gòu)建應(yīng)用程序上下文,那么Bootstrap上下文將添加為該上下文的父級。Spring的一個(gè)特性是子上下文從其父級繼承屬性源和配置文件,因此與不使用Spring Cloud Config構(gòu)建相同的上下文相比,“主”應(yīng)用程序上下文包含額外的屬性源,額外的屬性源是:

“bootstrap”:如果在Bootstrap上下文中找到任何PropertySourceLocators,并且它們具有非空屬性,則會出現(xiàn)具有高優(yōu)先級的可選CompositePropertySource,一個(gè)例子是Spring Cloud Config Server的屬性。

“applicationConfig: [classpath:bootstrap.yml]”(以及相關(guān)文件,如果Spring配置文件處于活動(dòng)狀態(tài)):如果你有bootstrap.yml(或.properties),則這些屬性用于配置Bootstrap上下文,然后,當(dāng)設(shè)置了其父級時(shí),它們將添加到子上下文中。它們的優(yōu)先級低于application.yml(或.properties)以及作為創(chuàng)建Spring Boot應(yīng)用程序過程的正常部分添加到子級的任何其他屬性源。

由于屬性源的排序規(guī)則,“bootstrap”條目優(yōu)先,但請注意,這些不包含來自bootstrap.yml的任何數(shù)據(jù),它具有非常低的優(yōu)先級,但可用于設(shè)置默認(rèn)值。

你可以通過設(shè)置你創(chuàng)建的任何ApplicationContext的父上下文來擴(kuò)展上下文層次結(jié)構(gòu) — 例如,通過使用它自己的接口或SpringApplicationBuilder便捷方法(parent()、child()sibling()),bootstrap上下文是你自己創(chuàng)建的最高級祖先的父級。層次結(jié)構(gòu)中的每個(gè)上下文都有自己的“bootstrap”(可能是空的)屬性源,以避免無意中把父級的值傳給后代。如果存在Config Server,則層次結(jié)構(gòu)中的每個(gè)上下文(原則上)也可以具有不同的spring.application.name,因此具有不同的遠(yuǎn)程屬性源。普通的Spring應(yīng)用程序上下文行為規(guī)則適用于屬性解析:來自子上下文的屬性按名稱和屬性源名稱覆蓋父級中的屬性(如果子項(xiàng)具有與父項(xiàng)具有相同名稱的屬性源,則父項(xiàng)中的值不包括在子項(xiàng)中)。

請注意,SpringApplicationBuilder允許你在整個(gè)層次結(jié)構(gòu)中共享Environment,但這不是默認(rèn)設(shè)置,因此,兄弟上下文尤其不需要具有相同的配置文件或?qū)傩栽?,即使他們可能與父上下文共享共同的值。

更改Bootstrap屬性的位置

可以通過設(shè)置spring.cloud.bootstrap.name(默認(rèn)值:bootstrap)或spring.cloud.bootstrap.location(默認(rèn)值為空)來指定bootstrap.yml(或.properties)位置 — 例如,在系統(tǒng)屬性中。這些屬性的行為類似于具有相同名稱的spring.config.*變體,實(shí)際上,它們用于通過在其Environment中設(shè)置這些屬性來設(shè)置bootstrap ApplicationContext。如果存在活動(dòng)配置文件(來自spring.profiles.active或通過你正在構(gòu)建的上下文中的Environment API),則該配置文件中的屬性也會加載,與常規(guī)Spring Boot應(yīng)用程序相同 — 例如,來自bootstrap-development.propertiesdevelopment配置文件。

覆蓋遠(yuǎn)程屬性的值

bootstrap上下文添加到應(yīng)用程序的屬性源通常是“遠(yuǎn)程”的(例如,來自Spring Cloud Config Server),默認(rèn)情況下,它們無法被本地覆蓋。如果要讓應(yīng)用程序使用自己的系統(tǒng)屬性或配置文件覆蓋遠(yuǎn)程屬性,遠(yuǎn)程屬性源必須通過設(shè)置spring.cloud.config.allowOverride=true來授予它權(quán)限(它不能在本地設(shè)置它),設(shè)置該標(biāo)志后,兩個(gè)更細(xì)粒度的設(shè)置將控制遠(yuǎn)程屬性相對于系統(tǒng)屬性和應(yīng)用程序本地配置的位置:

spring.cloud.config.overrideNone=true:從任何本地屬性源覆蓋。

spring.cloud.config.overrideSystemProperties=false:只有系統(tǒng)屬性、命令行參數(shù)和環(huán)境變量(但不是本地配置文件)才應(yīng)覆蓋遠(yuǎn)程設(shè)置。

自定義Bootstrap配置

通過向/META-INF/spring.factories下添加鍵名為org.springframework.cloud.bootstrap.BootstrapConfiguration的條目,可以將bootstrap上下文設(shè)置為執(zhí)行任何操作。它包含一個(gè)以逗號分隔的用于創(chuàng)建上下文的Spring @Configuration類列表,你可以在此處創(chuàng)建你希望可用于主應(yīng)用程序上下文以進(jìn)行自動(dòng)裝配的任何Bean。ApplicationContextInitializer類型的@Beans有一個(gè)特殊的合約,如果要控制啟動(dòng)順序,可以使用@Order注解標(biāo)記類(默認(rèn)順序?yàn)?b>last)。

添加自定義BootstrapConfiguration時(shí),請注意你添加的類不是@ComponentScanned錯(cuò)誤地進(jìn)入你的“主”應(yīng)用程序上下文,可能不需要它們。為引導(dǎo)配置類使用多帶帶的包名稱,并確保@ComponentScan@SpringBootApplication注解的配置類尚未涵蓋該名稱。

引導(dǎo)過程通過將初始化器注入主SpringApplication實(shí)例(這是正常的Spring Boot啟動(dòng)順序,無論是作為獨(dú)立應(yīng)用程序運(yùn)行還是部署在應(yīng)用程序服務(wù)器中)而結(jié)束,首先,從spring.factories中的類創(chuàng)建bootstrap上下文,然后,所有類型為ApplicationContextInitializer@Beans在它啟動(dòng)之前都會添加到主SpringApplication中。

自定義Bootstrap屬性源

引導(dǎo)過程添加的外部配置的默認(rèn)屬性源是Spring Cloud Config Server,但你可以通過將類型為PropertySourceLocator的bean添加到bootstrap上下文中來添加其他來源(通過spring.factories),例如,你可以從不同的服務(wù)器或數(shù)據(jù)庫插入其他屬性。

例如,請考慮以下自定義locator

@Configuration
public class CustomPropertySourceLocator implements PropertySourceLocator {

    @Override
    public PropertySource locate(Environment environment) {
        return new MapPropertySource("customProperty",
                Collections.singletonMap("property.from.sample.custom.source", "worked as intended"));
    }

}

傳入的Environment是要?jiǎng)?chuàng)建的ApplicationContext的環(huán)境 — 換句話說,我們?yōu)槠涮峁┢渌麑傩栽吹沫h(huán)境。它已經(jīng)有了正常的Spring Boot提供的屬性源,因此,你可以使用它們來查找特定于此Environment的屬性源(例如,通過將其鍵入spring.application.name,就像在默認(rèn)的Spring Cloud Config Server屬性源定位器中所做的那樣)。

如果在其中創(chuàng)建包含此類的jar,然后添加包含以下內(nèi)容的META-INF/spring.factories,則customProperty PropertySource將出現(xiàn)在其類路徑中包含該jar的任何應(yīng)用程序中:

org.springframework.cloud.bootstrap.BootstrapConfiguration=sample.custom.CustomPropertySourceLocator
日志記錄配置

如果要使用Spring Boot配置日志設(shè)置,則應(yīng)將此配置放在‘bootstrap.[yml | properties]’,如果你希望它適用于所有事件。

要使Spring Cloud正確初始化日志記錄配置,你不能使用自定義前綴,例如,初始化日志記錄系統(tǒng)時(shí),使用custom.loggin.logpath不被Spring Cloud識別。
環(huán)境變化

應(yīng)用程序偵聽EnvironmentChangeEvent并以幾種標(biāo)準(zhǔn)方式對更改做出反應(yīng)(用戶可以正常方式將其他ApplicationListener添加為@Beans),當(dāng)觀察到EnvironmentChangeEvent時(shí),它有一個(gè)已更改的鍵值列表,應(yīng)用程序使用它們:

在上下文中重新綁定任何@ConfigurationProperties bean

logging.level.*中的任何屬性設(shè)置記錄器級別

請注意,默認(rèn)情況下,Config Client不會輪詢Environment中的更改,通常,我們不建議使用這種方法來檢測更改(盡管你可以使用@Scheduled注解進(jìn)行設(shè)置)。如果你有一個(gè)擴(kuò)展的客戶端應(yīng)用程序,最好將EnvironmentChangeEvent廣播到所有實(shí)例,而不是讓它們輪詢更改(例如,通過使用Spring Cloud Bus)。

EnvironmentChangeEvent涵蓋了一大類刷新用例,只要你可以實(shí)際更改環(huán)境并發(fā)布事件即可,請注意,這些API是公共的,并且是核心Spring的一部分。你可以通過訪問/configprops端點(diǎn)(一個(gè)正常的Spring Boot Actuator功能)來驗(yàn)證更改是否綁定到@ConfigurationProperties bean。例如,DataSource可以在運(yùn)行時(shí)更改其maxPoolSize(Spring Boot創(chuàng)建的默認(rèn)DataSource@ConfigurationProperties bean)并動(dòng)態(tài)增加容量。重新綁定@ConfigurationProperties不包括另一大類用例,這類用例你需要更多地控制刷新,并且需要對整個(gè)ApplicationContext進(jìn)行原子性更改,為了解決這些問題,我們有@RefreshScope

刷新作用域

當(dāng)配置發(fā)生變化時(shí),標(biāo)記為@RefreshScope的Spring @Bean會得到特殊處理,該特性解決了只有在初始化狀態(tài)bean時(shí)才注入配置的有狀態(tài)bean的問題。例如,如果DataSource在通過Environment更改數(shù)據(jù)庫URL時(shí)具有打開的連接,你可能希望這些連接的持有者能夠完成他們正在做的事情,然后,下次從池中借用某個(gè)連接時(shí),它會獲得一個(gè)帶有新URL的連接。

有時(shí),甚至可能必須在某些只能初始化一次的bean上應(yīng)用@RefreshScope注解,如果bean是“不可變的”,則必須使用@RefreshScope注解bean,或者在屬性鍵spring.cloud.refresh.extra-refreshable下指定classname。

如果你自己創(chuàng)建一個(gè)DataSource bean并且該實(shí)現(xiàn)是一個(gè)HikariDataSource,則返回最具體的類型,在本例中為HikariDataSource,否則,你需要設(shè)置spring.cloud.refresh.extra-refreshable=javax.sql.DataSource

刷新作用域bean是在使用它們時(shí)初始化的惰性代理(即,在調(diào)用方法時(shí)),并且作用域充當(dāng)初始化值的緩存,要強(qiáng)制bean在下一個(gè)方法調(diào)用上重新初始化,必須使其緩存條目無效。

RefreshScope是上下文中的一個(gè)bean,它有一個(gè)公共refreshAll()方法,通過清除目標(biāo)緩存來刷新作用域中的所有bean,/refresh端點(diǎn)公開此功能(通過HTTP或JMX),要按名稱刷新單個(gè)bean,還有一個(gè)refresh(String)方法。

要公開/refresh端點(diǎn),你需要將以下配置添加到你的應(yīng)用程序:

management:
  endpoints:
    web:
      exposure:
        include: refresh
@RefreshScope(在技術(shù)上)在@Configuration類上工作,但它可能會導(dǎo)致令人驚訝的行為。例如,它并不意味著該類中定義的所有@Beans本身都在@RefreshScope中,具體來說,依賴于那些bean的任何東西都不能依賴于在啟動(dòng)刷新時(shí)更新它們,除非它本身在@RefreshScope中。在這種情況下,它會在刷新時(shí)重建,并重新注入其依賴項(xiàng),此時(shí),它們將從刷新的@Configuration重新初始化。
加密和解密

Spring Cloud有一個(gè)Environment預(yù)處理器,用于在本地解密屬性值,它遵循與Config Server相同的規(guī)則,并通過encrypt.*具有相同的外部配置。因此,你可以使用{cipher}*形式的加密值,只要有有效密鑰,它們就會在主應(yīng)用程序上下文獲取Environment設(shè)置之前被解密。要在應(yīng)用程序中使用加密功能,你需要在類路徑中包含Spring Security RSA(Maven:"org.springframework.security:spring-security-rsa"),并且你還需要JVM中的全強(qiáng)度JCE擴(kuò)展。

如果由于“Illegal key size”而導(dǎo)致異常,并且你使用Sun的JDK,則需要安裝Java加密擴(kuò)展(JCE)無限制強(qiáng)度權(quán)限策略文件,有關(guān)更多信息,請參閱以下鏈接:

Java 6 JCE

Java 7 JCE

Java 8 JCE

無論你使用哪種版本的JRE/JDK x64/x86,都要將文件解壓縮到JDK/jre/lib/security文件夾中。

端點(diǎn)

對于Spring Boot Actuator應(yīng)用程序,可以使用一些其他管理端點(diǎn),你可以使用:

POST/actuator/env以更新Environment并重新綁定@ConfigurationProperties和日志級別。

/actuator/refresh重新加載引導(dǎo)上下文并刷新@RefreshScopebean。

/actuator/restart關(guān)閉ApplicationContext并重新啟動(dòng)它(默認(rèn)情況下禁用)。

/actuator/pause/actuator/resume用于調(diào)用Lifecycle方法(ApplicationContext上的stop()start())。

如果禁用/actuator/restart端點(diǎn),則/actuator/pause/actuator/resume端點(diǎn)也將被禁用,因?yàn)樗鼈冎皇?b>/actuator/restart的特殊情況。
上一篇:Spring Cloud 參考文檔(目錄) 下一篇:Spring Cloud Commons:通用的抽象

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72250.html

相關(guān)文章

  • Spring Cloud 參考文檔Spring Cloud Commons:通用的抽象)

    摘要:通用的抽象服務(wù)發(fā)現(xiàn)負(fù)載均衡和斷路器等模式適用于所有客戶端都可以使用的通用抽象層,獨(dú)立于實(shí)現(xiàn)例如,使用或發(fā)現(xiàn)。重試失敗的請求可以將負(fù)載均衡的配置為重試失敗的請求,默認(rèn)情況下,禁用此邏輯,你可以通過將添加到應(yīng)用程序的類路徑來啟用它。 Spring Cloud Commons:通用的抽象 服務(wù)發(fā)現(xiàn)、負(fù)載均衡和斷路器等模式適用于所有Spring Cloud客戶端都可以使用的通用抽象層,獨(dú)立于實(shí)...

    yangrd 評論0 收藏0
  • Spring Cloud 參考文檔Spring Cloud Sleuth特性)

    摘要:介紹從版本開始,使用作為追蹤庫,為方便起見,在此處嵌入了的部分文檔。具有一個(gè)上下文,其中包含標(biāo)識符,該標(biāo)識符將放置在表示分布式操作的樹中的正確位置。追蹤通常由攔截器自動(dòng)完成,在幕后,他們添加與他們在操作中的角色相關(guān)的標(biāo)簽和事件。 Spring Cloud Sleuth特性 將trace和span ID添加到Slf4J MDC,因此你可以在日志聚合器中從給定的trace或span提取...

    chinafgj 評論0 收藏0
  • Spring Cloud 參考文檔Spring Cloud Sleuth介紹)

    摘要:那個(gè)配置文件將來自應(yīng)用程序的信息以格式記錄到文件中。以下清單顯示了使用的集成測試設(shè)置代碼添加到項(xiàng)目本節(jié)介紹如何使用或?qū)⑻砑拥巾?xiàng)目中。以下示例顯示了如何為執(zhí)行此操作建議你通過添加依賴關(guān)系管理,這樣你就無需自行管理版本。 Spring Cloud Sleuth介紹 Spring Cloud Sleuth為Spring Cloud實(shí)現(xiàn)了分布式追蹤解決方案。 術(shù)語 Spring Cloud S...

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

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

    邱勇 評論0 收藏0
  • Spring Cloud 參考文檔Spring Cloud Config快速入門)

    摘要:快速入門這個(gè)快速入門使用的服務(wù)器和客戶端。屬性在端點(diǎn)中顯示為高優(yōu)先級屬性源,如以下示例所示。名為的屬性源包含值為且具有最高優(yōu)先級的屬性。屬性源名稱中的是存儲庫,而不是配置服務(wù)器。 Spring Cloud Config快速入門 這個(gè)快速入門使用Spring Cloud Config Server的服務(wù)器和客戶端。 首先,啟動(dòng)服務(wù)器,如下所示: $ cd spring-cloud-con...

    gekylin 評論0 收藏0

發(fā)表評論

0條評論

魏明

|高級講師

TA的文章

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