zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    badboy安装及使用(网页录制可用于jmeter)
    allure使用MASTER_HELPER报错cannot find reference MASTER_HELPER in allure.py
    Python之Django--ORM连表操作
    Python之前端
    Python之线程池
    Python之Web框架们
    Python之Django【进阶篇 】
    Python之Django【基础篇】
    Python框架之Tornado(四)源码之褪去模板外衣
    Python框架之Tornado(四)源码之褪去模板外衣的前戏
  • 原文地址:https://www.cnblogs.com/elian91/p/15711941.html
Copyright © 2011-2022 走看看