spring 学习

FactoryBean是spring容器的规范,接口

方法:

BeanFactory接口设计了getBean方法,这个方法是使用IoC容器API的主要方法,通过这个方法,可以取得IoC容器中管理的BeanBean的取得是通过指定名字来进行索引的。如果需要在获取Bean时对Bean的类型进行检查,BeanFactory接口定义了带有参数的getBean方法,这个方法的使用与getBean方法类似,不同的是增加了对Bean检索的类型的要求。

用户可以通过BeanFactory接口方法getBean来使用Bean名字,从而当获取Bean时,如果需要获取的Beanprototype类型的,用户还可以为这个prototype类型的Bean生成指定构造函数的对应参数。这使得在一定程度上可以控制生成prototype类型的Bean。有了BeanFactory的定义,用户可以执行以下操作:

* 通过接口方法containsBean让用户能够判断容器是否含有指定名字的Bean

* 通过接口方法isSingleton来查询指定了名字的Bean是否是Singleton类型的Bean。对于Singleton属性,用户可以在BeanDefinition中指定。

* 通过接口方法isPrototype来查询指定了名字的Bean是否是prototype类型的。与Singleton属性一样,这个属性也可以由用户在BeanDefinition中指定。

* 通过接口方法isTypeMatch来查询指定了名字的BeanClass类型是否是特定的Class类型。这个Class类型可以由用户来指定。

* 通过接口方法getType来查询指定了名字的BeanClass类型。

* 通过接口方法getAliases来查询指定了名字的Bean的所有别名,这些别名都是用户在BeanDefinition中定义的。

//

spring 学习_第1张图片

//

AutowireCapableBeanFactory→AbstractAutowireCapableBeanFactory→DefaultListableBeanFactory→XmlBeanFactory



 ioc容器过程

1 读取 BeanDefinition的定义信息(ClassPathResource res = new ClassPathResource("beans.xml")

2 创建beanfactory

3 创建beandefinition的读取器,然后回调给beanfactory

4 读取器读取的配置信息,完成整个载入和注册Bean定义,IoC容器就建立

整个过程简单说就是:
类信息装入BeanDefinition IOC容器通过BeanDefinitionRegistry接口实现注册到容器中  容器使用一个HashMap来持有这些BeanDefinition数据
IOC容器的内部数结构就是BeanDefinition

你可能感兴趣的:(spring 学习)