首页 > 代码库 > spring 学习
spring 学习
FactoryBean是spring容器的规范,接口
方法:
BeanFactory接口设计了getBean方法,这个方法是使用IoC容器API的主要方法,通过这个方法,可以取得IoC容器中管理的Bean,Bean的取得是通过指定名字来进行索引的。如果需要在获取Bean时对Bean的类型进行检查,BeanFactory接口定义了带有参数的getBean方法,这个方法的使用与getBean方法类似,不同的是增加了对Bean检索的类型的要求。
用户可以通过BeanFactory接口方法getBean来使用Bean名字,从而当获取Bean时,如果需要获取的Bean是prototype类型的,用户还可以为这个prototype类型的Bean生成指定构造函数的对应参数。这使得在一定程度上可以控制生成prototype类型的Bean。有了BeanFactory的定义,用户可以执行以下操作:
* 通过接口方法containsBean让用户能够判断容器是否含有指定名字的Bean。
* 通过接口方法isSingleton来查询指定了名字的Bean是否是Singleton类型的Bean。对于Singleton属性,用户可以在BeanDefinition中指定。
* 通过接口方法isPrototype来查询指定了名字的Bean是否是prototype类型的。与Singleton属性一样,这个属性也可以由用户在BeanDefinition中指定。
* 通过接口方法isTypeMatch来查询指定了名字的Bean的Class类型是否是特定的Class类型。这个Class类型可以由用户来指定。
* 通过接口方法getType来查询指定了名字的Bean的Class类型。
* 通过接口方法getAliases来查询指定了名字的Bean的所有别名,这些别名都是用户在BeanDefinition中定义的。
//
//
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 学习