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

  • 相关阅读:
    设置多台机器linux服务器ssh相互无密码访问
    linux环境下 卸载 Oracle11G
    树型结构递归 实体递归 JSON格式
    Fiddler工具非常强大好用
    SQL 分页 SQL SERVER 2008
    Html table 细边框
    Oracle用户密码过期的处理方法
    将目录下面所有的 .cs 文件合并到一个 code.cs 文件中,写著作权复制代码时的必备良药
    微软帮你做了枚举的位运算
    根据身份证算出生日期和性别
  • 原文地址:https://www.cnblogs.com/langtianya/p/5015828.html
Copyright © 2011-2022 走看看