spring之BeanFactoryAware接口

要直接在自己的代碼中讀取spring的bean,我們除了根據常用的set外,也可以通過spring的BeanFactoryAware接口實現,只要實現setBeanFactory方法就可以,

private BeanFactory               beanFactory;

public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}

這樣我們就可以直接拿東西用了,如
Object  object = beanFactory.getBean(beanName);

我們既然可以通過set來拿到我們要的對象,爲什麼還要用這個beanFactory呢,道理很簡單,因爲有些情況是需要動態的去獲取對象的,比如說我有10個銀行的處理對象,他們都繼承了我的BankService對象,但是具體處理的時候要哪家銀行的對象呢?這個依賴於用戶的選擇。你可以注入10個BankService實例,然後用if --else來搞,不過那樣太坨了。每增加一家銀行你都需要改代碼。

通過beanFactory的話,那就一行代碼搞定,只要給beanName就OK了,動點腦筋吧beanName配置的有規律點,然後根據用戶的銀行選擇,湊出個beanName,大功告成了!

簡單一句話的理解是:beanFactory讓你可以不依賴注入方式,隨意的讀取IOC容器裏面的對象,不過beanFactory本身還是要注入的,呵呵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章