Spring擴充套件點之Aware介面族

2021-09-27 04:09:54 字數 1556 閱讀 1167

這些aware的作用都可以從命名得知

aware的處理

其中beannameawarebeanclassloaderawarebeanfactoryaware這三個是直接在bean的初始化之前就處理了的,具體**在abstractautowirecapablebeanfactory.initializebean方法中:

protected object initializebean(string beanname, object bean, rootbeandefinition mbd) 	

if (bean instanceof beanclassloaderaware)

if (bean instanceof beanfactoryaware)

// 開始bean初始化前處理、初始化、初始化後處理

if (mbd == null || !mbd.issynthetic())

try

catch (throwable ex)

if (mbd == null || !mbd.issynthetic())

}

除了這三種之外的那些aware介面的實現就不太一樣了,它們都是利用beanpostprocessor介面完成的,關於beanpostprocessor介面的原理可以這篇文章:spring擴充套件點之beanpostprocessor

public object postprocessbeforeinitialization(final object bean, string beanname) throws bean***ception 	

if (acc != null) , acc);

} else

return bean;

} private void invokeawareinte***ces(object bean)

if (bean instanceof embeddedvalueresolveraware)

if (bean instanceof resourceloaderaware)

} if (bean instanceof messagesourceaware)

} }

}

beanfactory.setbeanclassloader(getclassloader());	

beanfactory.addpropertyeditorregistrar(new resourceeditorregistrar(this));

beanfactory.ignoredependencyinte***ce(resourceloaderaware.class);

beanfactory.ignoredependencyinte***ce(messagesourceaware.class);

Spring高階話題 Aware

一 aware是什麼?spring aware就是一些定義了spring容器本身功能資源的介面 spring提供的aware介面 介面備註 beannameaware 獲得到容器中bean的名稱 beanfactoryaware 獲得當前 bean factory,這樣可以呼叫容器的服務 messa...

Spring中的Aware介面

spring中提供了一些以aware結尾的介面,實現了aware介面的bean在被初始化後,可以獲取相應資源。通過aware介面,可以對spring相應資源進行操作 一定要慎重,因為可能修改spring核心類 aware有以下介面 介面作用 beannameaware 在bean中得到它在ioc容器...

Spring中Aware系列介面

一 ioc容器管理bean,bean在ioc容器中。那麼bean知不知道自己在ioc容器中的代號 id 呢?bean知不知道自己在哪個ioc容器中?能否通過bean獲取它的ioc容器物件呢?簡單來說就是 bean是否對spring有知覺 答 單純的bean 未實現aware系列介面 是沒有知覺的 實...