• spring之BeanFactoryAware接口


    springBeanFactoryAware 

    (转)要直接在自己的代码中读取spring的bean,我们除了根据常用的set外,也可以通过spring的BeanFactoryAware接口实现,只要实现setBeanFactory方法就可以,

    Java代码  收藏代码
    1. private BeanFactory               beanFactory;  
    2.   
    3. public void setBeanFactory(BeanFactory beanFactory) throws BeansException {  
    4. this.beanFactory = beanFactory;  
    5. }  

     

    这样我们就可以直接拿东西用了,如

    Java代码  收藏代码
    1. Object  object = beanFactory.getBean(beanName);  

     

    我们既然可以通过set来拿到我们要的对象,为什么还要用这个beanFactory呢,道理很简单,因为有些情况是需要动态的去获取 对象的,比如说我有10个银行的处理对象,他们都继承了我的BankService对象,但是具体处理的时候要哪家银行的对象呢?这个依赖于用户的选择。 你可以注入10个BankService实例,然后用if --else来搞,不过那样太坨了。每增加一家银行你都需要改代码。

    通过beanFactory的话,那就一行代码搞定,只要给beanName就OK了,动点脑筋吧beanName配置的有规律点,然后根据用户的银行选择,凑出个beanName,大功告成了!

    另外注意:

    使用ClassPathXmlApplicationContext 加载bean.xml文件才能将实现BeanFactoryAware接口的bean的BeanFactory注入进去。

    spring的IoC容器核心为BeanFactory接口,该接口的最常用实现是XmlBeanFactory类,该类使用xml配置文件来初始化一个BeanFactory实例。

    ApplicationContext是对BeanFactory接口的扩展,在大多数的应用中,使用ApplicationContext的优先级要高于BeanFactory,两者对比如下:

    特性

    BeanFactory

    ApplicationContext

    Bean 实例化/装配

    Yes

    Yes

    自动 BeanPostProcessor 注册

    No

    Yes

    自动 BeanFactoryPostProcessor 注册

    No

    Yes

    便捷的 MessageSource 访问( i18n)

    No

    Yes

    ApplicationEvent 发送

    No

    Yes

  • 相关阅读:
    ArcGIS10.3.1于2015年6月发布
    jS数组
    正则表达式
    JS中prototype属性-JS原型模式
    URI, URL, and URN
    JS中的Call和apply
    北京获得2022冬奥会举办权
    JQuery.on()事件绑定
    JavaScript模块化-require.js
    SpringBoot中DataSourceAutoConfiguration注解
  • 原文地址:https://www.cnblogs.com/langtianya/p/5015828.html
Copyright © 2020-2023  润新知