Spring源碼之BeanFactoryAware接口


1、用處

獲取bean

2、使用方法

實現BeanFactoryAware接口的setBeanFactory方法。BeanFactoryAware也只有這個方法。

private BeanFactory beanFactory; public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } Object object = beanFactory.getBean(beanName); //或者
this.getBean(beanName); 

3、好處

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

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

4、注意

使用ClassPathXmlApplicationContext 加載bean.xml文件才能將實現BeanFactoryAware接口的bean的BeanFactory注入進去。

5、擴展

spring的IoC容器核心為BeanFactory接口,該接口的最常用實現是XmlBeanFactory類,該類使用xml配置文件來初始化一個BeanFactory實例。

ApplicationContext是對BeanFactory接口的擴展,在大多數的應用中,使用ApplicationContext的優先級要高於BeanFactory,兩者對比如下:

 

參考來源:https://www.cnblogs.com/pc-boke/articles/9156978.html

更多:https://blog.csdn.net/jianjun200607/article/details/94986347


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM