BeanFactory详解

BeanFactory,它是一个接口工厂类,用于管理spring中的Bean。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。 Spring为我们提供了许多易用的BeanFactory实现,XmlBeanFactory就是常用的一个,该实现将以XML方式描述组成应用的对象及对象间的依赖关系。XmlBeanFactory类将持有此XML配置元数据,并用它来构建一个完全可配置的系统或应用。

相关接口和实现类的UML图

  • BeanFactory接口
    • 是Spring bean容器的根接口.提供获取bean,是否包含bean,是否单例与原型,获取bean类型,bean 别名的方法
  • BeanFactory的三个子接口
    • HierarchicalBeanFactory:提供父容器的访问功能
    • ListableBeanFactory:提供了批量获取Bean的方法
    • AutowireCapableBeanFactory:在BeanFactory基础上实现对已存在实例的管理
  • ConfigurableBeanFactory
  • ConfigurableListableBeanFactory
    • 继承了上述的所有接口,增加了其他功能:比如类加载器,类型转化,属性编辑器,BeanPostProcessor,作用域,bean定义,处理bean依赖关系, bean如何销毁…
  • 实现类DefaultListableBeanFactory
    • 实现了ConfigurableListableBeanFactory,实现上述BeanFactory所有功能。它还可以注册BeanDefinition

ClassPathXmlApplicationContext是BeanFactory的一个典型的实现,同时它也是 ApplicationContext的子类,ClassPathXmlApplicationContext从 xml 的配置文件中获取 bean 并且管理他们。

1
2
3
4
5
public static void main(String[] args) throws Exception {
    BeanFactory bf = new ClassPathXmlApplicationContext("application.xml");
    UserHandler userHandler = (UserHandler) bf.getBean("userHandler");
    log.info("handler:{}",userHandler);
}

xml配置

1
2
3
<bean id="userHandler" class="fun.vyse.cloud.UserHandler">
    <property name="userService" ref="userService"/>
</bean>

文章参考:【Spring4揭秘 BeanFactory】基本容器-BeanFactory

未完待续…