文章字数:420,阅读全文大约需要1分钟
Spring最基本的功能就是容器,容器的核心功能是IOC控制反转。将类的创建、装配、销毁交由容器管理。BeanFacotry和ApplicationContext两个接口是Spring最核心的接口,其中ApplicationContext是BeanFactory的子接口。二者都可以作为容器使用。
关系
ApplicationContext是BeanFactory的拓展接口。
BeanFactory一般称为IOC容器,而ApplicationContext称为应用上下文。
BeanFactory提供了最基本的容器管理功能,ApplicationContext提供更多服务,如解析配置文本信息等。一般使用ApplicationContext。
BeanFactory
主要功能是装配,创建,管理Bean。
Spring ICO容器的实现本质上是BeanFactory,但是真正可以单独使用的容器还是DefaultListableBeanFactory(实现类)
BeanFactory是容器的根接口,主要方法是getBean(String beanName)
直接子接口
HierarchicalBeanFactory:提供父容器的访问功能
ListableBeanFactory:提供批量获取Bean的方法
AutowireCapableBeanFactory:增加对已存在的实例的管理
ConfigurableBeanFactory
主要单例bean的注册,生成实例,以及统计单例bean
ConfigurableListableBeanFactory
继承了上述的所有接口,增加了其他功能:比如类加载器,类型转化,属性编辑器,BeanPostProcessor,作用域,bean定义,处理bean依赖关系, bean如何销毁…
实现类DefaultListableBeanFactory
实现了ConfigurableListableBeanFactory,实现上述BeanFactory所有功能。它还可以注册BeanDefinition
ApplicationContext
应用上下文,继承了BeanFactory接口拥有更多的功能。启动时就可以加载所有的Bean,也可以延迟加载。
- 国际化(MessageSource)
- 资源访问(ResourceLoader)
- 载入多个上下文
- 消息发送响应机制(ApplicationEventPublisher)
- aop
web端使用ApplicationContext多一点