0%

BeanFactory和ApplicationContext

文章字数:420,阅读全文大约需要1分钟

Spring最基本的功能就是容器,容器的核心功能是IOC控制反转。将类的创建、装配、销毁交由容器管理。BeanFacotryApplicationContext两个接口是Spring最核心的接口,其中ApplicationContextBeanFactory的子接口。二者都可以作为容器使用。

关系

  1. ApplicationContextBeanFactory的拓展接口。

  2. BeanFactory一般称为IOC容器,而ApplicationContext称为应用上下文。

  3. BeanFactory提供了最基本的容器管理功能,ApplicationContext提供更多服务,如解析配置文本信息等。一般使用ApplicationContext

BeanFactory

主要功能是装配,创建,管理Bean。
Spring ICO容器的实现本质上是BeanFactory,但是真正可以单独使用的容器还是DefaultListableBeanFactory(实现类)

  1. BeanFactory是容器的根接口,主要方法是getBean(String beanName)

  2. 直接子接口

  • HierarchicalBeanFactory:提供父容器的访问功能
  • ListableBeanFactory:提供批量获取Bean的方法
  • AutowireCapableBeanFactory:增加对已存在的实例的管理
  1. ConfigurableBeanFactory
    主要单例bean的注册,生成实例,以及统计单例bean

  2. ConfigurableListableBeanFactory
    继承了上述的所有接口,增加了其他功能:比如类加载器,类型转化,属性编辑器,BeanPostProcessor,作用域,bean定义,处理bean依赖关系, bean如何销毁…

  3. 实现类DefaultListableBeanFactory
    实现了ConfigurableListableBeanFactory,实现上述BeanFactory所有功能。它还可以注册BeanDefinition

ApplicationContext

应用上下文,继承了BeanFactory接口拥有更多的功能。启动时就可以加载所有的Bean,也可以延迟加载。

  1. 国际化(MessageSource)
  2. 资源访问(ResourceLoader)
  3. 载入多个上下文
  4. 消息发送响应机制(ApplicationEventPublisher)
  5. aop

web端使用ApplicationContext多一点