SpringBoot2 擴充套件介面

2021-09-11 10:24:40 字數 1817 閱讀 1823

判斷乙個框架或者程式的好壞直觀的方法就是看其擴充套件性如何。

毫無疑問spring擴充套件性這方面做的不錯。

說到擴充套件主要還是在容器的refresh這塊,也有listener(這一塊先放放)

實現原則嚴格按照開閉原則,內部修改關閉,對擴充套件開放

咱們先看一張流程圖

如上圖中主要的畫出來了具體的執行流程,下面會具體說到每乙個擴充套件介面的使用場景

通過實現下面的介面可以動態註冊beandefinition

postprocessbeandefinitionregistry(beandefinitionregistry registry)

通過實現下面的介面可以修改所有註冊的beandefinition

postprocessbeanfactory(configurablelistablebeanfactory beanfactory)

實現該介面方法可以用於動態**或者增強bean

default object postprocessbeforeinstantiation(class> beanclass, string beanname) throws bean***ception

用於bean中的屬性值填充比如@autowired

default propertyvalues postprocesspropertyvalues(propertyvalues pvs, propertydescriptor pds, object bean, string beanname) throws bean***ception

用於判斷構造器方法

determinecandidateconstructors

發生bean迴圈依賴依賴的時候呼叫

default object getearlybeanreference(object bean, string beanname) throws bean***ception

這裡得看一段具體的**在該類中有如下方法,可以用來獲取容器的變數,用於專案中使用。

private

void

invokeawareinte***ces

(object bean)

if(bean instanceof

embeddedvalueresolveraware)if

(bean instanceof

resourceloaderaware)if

(bean instanceof)if

(bean instanceof

messagesourceaware)if

(bean instanceof)}

}

bean屬性設定之前對bean例項修改

default object postprocessbeforeinitialization(object bean, string beanname) throws bean***ception

bean屬性初始化之後對bean修改,aop**類實現的地方

default object postprocessafterinitialization(object bean, string beanname) throws bean***ception

初始化bean的時候呼叫,一般用來針對某個bean配置

afterpropertiesset

歡迎掃碼加入知識星球繼續討論

SpringBoot2啟動流程

springboot如果要說是springframework的封裝那麼也不全是,個人認為從思想上來說是兩個東西。springboot主要具備如下特性 1.自動裝配 2.內建tomcat等web容器 3.與devops天然整合,這也可以認為是微服務的特點。下面咱們看下 public class pub...

spring boot 2 基礎應用

restcontroller相當於 responsebody controller。使用spring initializer快速建立spring boot專案2 yaml語法 1 基本語法 k 空格 v 表示 對鍵值對 空格必須有 以空格的縮進來控制層級關係 只要是左對齊的一 列資料,都是同 個層級...

springBoot2 自動配置

雖然我們127個場景的所有自動配置啟動的時候預設全部載入 xautoconfiguration 但仍需按照條件裝配規則 conditional 按需配置。總結 springboot先載入所有的自動配置類 xxautoconfiguration 每個自動配置類按照條件進行生效,預設都會繫結配置檔案指定...