Spring cloud 上下文

這是我參與更文挑戰的第19天,活動詳情查看:更文挑戰java

Spring cloud,相信你們已經耳熟能詳了。Spring cloud 是一個基於 Spring boot 實現的雲應用開發工具;Spring boot 專一於快速、方便集成的單個個體。web

那麼問題來了,Spring cloud 單體裏的上下文是什麼呢?spring

首先咱們回憶下 Spring 的應用上下文,什麼是應用上下文呢?能夠簡單的理解,就是將你須要 Spring 幫你管理的對象放入容器的那麼一種容器對象。應用上下文便是Spring容器的一種抽象化表述,而咱們常見的ApplicationContext 本質上說就是一個維護 Bean 定義以及對象之間協做關係的牛逼接口。Spring 的核心是容器,而容器並不惟一,框架自己就提供了不少個容器的實現,大概分爲兩種類型:一種是不經常使用的 BeanFactory,這是最簡單的容器,只能提供基本的 DI 功能;還有一種就是繼承了BeanFactory 後派生而來的應用上下文,其抽象接口也就是咱們上面提到的ApplicationContext,它能提供更多企業級的服務,例如解析配置文件等,這也是應用上下文實例對象最多見的應用場景。有了上下文對象,咱們就能向容器註冊須要 Spring 管理的對象了。對於上下文抽象接口,Spring 也爲咱們提供了多種類型的容器實現,可在不一樣的應用場景選擇:bootstrap

  • AnnotationConfigApplicationContext: 從一個或多個基於java的配置類中加載上下文定義,適用於java註解的方式服務器

  • ClassPathXmlApplicationContext: 從類路徑下的一個或多個xml配置文件中加載上下文定義,適用於xml配置的方式markdown

  • XmlWebApplicationContext: 從web應用下的一個或多個xml配置文件加載上下文定義,適用於xml配置方式app

  • FileSystemXmlApplicationContext: 從文件系統下的一個或多個xml配置文件中加載上下文定義,也就是說系統盤中加載xml配置文件框架

  • AnnotationConfigWebApplicationContext: 專門爲web應用準備的,適用於註解方式工具

這樣,只須要將管理的對象(Spring 中咱們都稱爲 bean)、bean 之間的協做關係配置好,經過應用上下文將配置加載到IOC容器,讓Spring替咱們管理對象,待咱們須要使用對象的時候,再從容器中獲取 bean 就能夠了,由於容器能爲你的程序提供你想要的對象管理服務了。post

那麼其實一個 Spring cloud 應用程序中有一個「引導上下文」的概念,這個引導上下文是主應用程序的父上下文。引導上下文負責從配置服務器加載配置屬性,以及解密外部配置文件中的屬性。和主應用程序加載 application 中的屬性不一樣,引導上下文加載 bootstrap 中的屬性。配置在 bootstrap 中的屬性有更高的優先級,所以默認狀況下它們不能被本地配置覆蓋。

若是想禁用引導過程,可設置 spring.cloud.bootstrap.enabled=false。

bootstrap 配置文件的應用場景:

  • 使用 Spring Cloud Config 配置中心時,這時須要在 bootstrap 配置文件中添加鏈接到配置中心的配置屬性來加載外部配置中心的配置信息

  • 一些固定的不能被覆蓋的屬性

  • 一些加密/解密的場景

  • application 配置文件主要用於 Spring Boot 項目的自動化配置。

相關文章
相關標籤/搜索