spring ioc设计之BeanFactory接口系统解析

来源:互联网 发布:购买的域名如何使用 编辑:程序博客网 时间:2024/06/05 09:31



1.从接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一条主要的BeanFactory设计路径,在这条接口设计陆军
中,BeanFactory定义了基本的ioc容器规范,在这个接口定义中,包括了getBean()这样的ioc容器的基本方法(通过这个方法可以从容器中取得
Bean)。而在hiberarchialBeanFactory接口在继承了BeanFactory的基本接口之后,增加了getParantBeanFactory的接口功能,使得
BeanFacotry具备了双亲ioc容器的管理功能,在接下来的ConfigurableBeanFacotry接口中,主要定义了一些对BeanFactory的配置功能,比
如通过setParentBeanFactory()设置双清容器,通过addBeanPostProcessor()配置Bean后置处理器,等等,通过这些接口设计的叠加,定
义了BeanFactory就是简单的ioc容器的基本功能


2.第二条接口设计主线是,以ApplicationContext应用上下文接口为核心的接口设计,这里面主要设计接口有,从BeanFactory到
ListableBeanFactory,再到ApplicationContext,再到我们日常使用的webApplicationContext或者ConfigurableApplicationContext接口。
我们常用的应用上下文基本上都是ConfigurationAplicationContext或者WebApplicationContext的实现,在这个接口体系
中,ListableBeanFactory和HierarchicalBeanFactroy两个接口,连接BeanFactory接口定义和ApplicationConext应用上下文的接口定义。在
ListableBeanFactory接口中,细化了许多BeanFactory接口的功能,比如定义了getBeanDefinitaionNames()接口方法,对于
HierarchicalBeanFactory接口,我们在前文中已经提到过了,对于ApplcationContext接口,它用通过基础
MessageSoruce,ResourceLoader.applicationEventPublisther接口,在BeanFactory简单ioc容器的基础上添加了许多对高级容器的特性的支



3.这里涉及的是主要接口关系,而具体的ioc容器都是在这个接口体系下实现了,比如DefaultListableBeanFactory,这个基本的ioc容器的实现就
是实现了Configurable-BeanFactory,都是在DefaultListableBeanFactory的基础上做扩展的,同样的ApplicationContext的实现也是如此




4.这个接口系统是以BeanFactory和ApplicationContext为核心的,而BeanFactory又是ioc容器的最基本的接口,在ApplicationContext的设计
中,一方面,可以看到它继承了BeanFactory接口体系中的ListableBeanFactory,AutowireCapableBeanFactory/HierarchicalBeanFactory等
BeanFactory的接口,具备了BeanFactory ioc容器的基本功能,另一个方面,通过继承
MessageSoruce,ResourceLoader,ApplicatioNEventPublisher这些接口,GBeanFactory为ApplicationContext赋予了更加高级的ioc容器特性,
对于applixcationContext而言,为了在Web环境中使用它,还设计了WebApplicationContext接口,而这个接口通过继承ThememSoruce接口来扩
展功能


0 0
原创粉丝点击