IoC容器设计

本文主要摘录于  Spring技术内幕-深入即系Spring架构和设计原理(许文柯著)。

IoC是根据两个核心BeanFactory和ApplicationContext来设计的,这里先放一张Spring IoC容器的接口设计图:

主要由两条设计主线:

1、BeanFactory:定义了基本IoC容器规范getBean()

<-HierarchicalBeanFactory:具备了双亲IoC容器的管理功能getParentBean()

<-ConfigurableBeanFactory:主要定义了一些对BeanFactory的配置功能,如setParentBean()设置双亲IoC容器,addBeanPostProcessor()配置Bean的后置处理器

2、BeanFactory

<-ListableBeanFactory:细化了许多BeanFactory的功能,比如定义了getBeanDefinitionNames()

<-ApplicationContext:通过继承MessageSource、ResourceLoader、ApplicationEventPublisher等接口添加了许多对高级容器的特性的支持

<-WebApplicationContext

 

BeanFactory的使用场景和设计原理:

基本的IoC容器的实现就是实现了ConfigurableBeanFactory,从而成为一个简单的IoC 容器。像XmlBeanFactory就是在DefaultListableBeanFactory的基础上进行的扩展,以XmlBeanFactory为例:

AbstractBeanFactory<-AbstractAutowireCapableBeanFactory<-DefaultListableBeanFactory<-XmlBeanFactory.

在Spring中,DefaultListableBeanFactory是作为一个默认的功能完整的IoC容器来进行使用的,它可以算是一个容器的基本产品。

ApplicationContext的使用场景和设计原理:

因为ApplicationContext具备了非常丰富的附加功能,所以一般建议在开发应用时使用ApplicationContext作为IoC容器的基本形式,我们以FileSystemXmlApplicationContext为例:

AbstractApplicationContext<-AbstractRefreshableApplicationContext<-AbstractRefreshableConfigApplicationContext<-AbstractXmlApplicationContext<-FileSystemXmlApplicationContext

posted @ 2018-08-11 10:11  rayallenbj  阅读(234)  评论(0编辑  收藏  举报