码迷,mamicode.com
首页 > 其他好文 > 详细

BeanFactory

时间:2017-11-20 13:28:10      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:别名   增加   abstract   let   tsig   src   体系   ini   ima   

前言

   spring ioc容器的实现,从根源上是beanfactory,但真正可以作为一个可以独立使用的ioc容器是DefaultListableBeanFactory

1.BeanFactory体系结构图 

技术分享图片

 

一个最简单的BeanFactory的使用样例只需要几行代码:

BeanFactory beanFactory = new DefaultListableBeanFactory();
Resource resource = new ClasspathResource("beans.xml");
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(resource);

AbstractBeanFactory实现了依赖关系处理

AbstractAutowireCapleBeanFactory实现了bean的create过程 

DefaultListableBeanFactory实现了BeanDefinition的管理

下面看看beanfactory各接口功能的定义

1.首先是顶层的BeanFactory,从它的定义方法来看,主要提供获取Bean对象,判断给定的Bean对象是否被当前的BeanFactory加载过,是否是Singleton/Prototype,类型是否匹配,等等最基本的功能。

2.左边分支:ListableBeanFactory,此接口继承了BeanFactory的同时,提供了列举Bean的功能,它能够列举当前BeanFactory加载的所有bean:列举所有Bean的名字或者满足某种类型的bean的名字,根据类型返回所有bean对象等。但是它无法获取父层BeanFactory加载的单例bean

3.看中间分支:HierachicalBeanFactory和ConfigurableBeanFactory,AutowireCapableBeanFactory

    HierachicalBeanFactory比较简单,它主要提供父BeanFactory的功能,通过它能够获取当前BeanFactory的父BeanFactory。(比如,若在A工厂启动并加载bean之前,B工厂先启动并加载了,那B就是A的父工厂),这样就能让当前的beanfactory加载父beanfactory加载的bean了,弥补了ListableBeanFactory欠缺的功能。

    ConfigurableBeanFactory就是在HierachicalBeanFactory的基础上增加了可配置的功能,包括注册别名、注册单例、设置classloader、是否缓存BeanMetadata、设置BeanPostProcessor、配置Bean依赖等等。ConfigurableBeanFactory还继承了SingletonBeanRegistry接口主要是用来定义用来共享的bean实例的注册表,通过它可以使得BeanFactory实现统一的方式暴露其单例bean管理。

  AutowireCapableBeanFactory,主要是提供Bean的自动装配功能,为已有的Bean装配属性等

4.再看右边分支

  先是 SingletonBeanRegisty/DefautSigletonBeanRegistry/FactoryBeanRegistrySupport

SigletonBeanRegistry在前面已提到,DefaultSigletonBeanRegistry是它的默认实现类,它不仅支持SigletonBean的注册,也支持DisposableBean的注册管理用来清理要丢弃的bean以及他们依赖的资源。

FactoryBeanRegistrySupport主要是对FactoryBean的支持,获取FactoryBean、FactoryBean的类型,获取FactoryBean暴露的目标对象等。

  再是AbatractAutowireCapableBeanFacotry,实现AutowireCapableBeanFactory接口的bean装配功能,实现createBean autowireBean configBean()等方法。

DefaultListableBeanFactory继承AbatractAutowireCapableBeanFacotry功能的同时再实现了ConfigurableListableBeanFactory的功能,主要是实现了BeanDefinition的管理

2.

                     

BeanFactory

标签:别名   增加   abstract   let   tsig   src   体系   ini   ima   

原文地址:http://www.cnblogs.com/whx7762/p/7793855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!