Spring的BeanFactory
Last updated
Last updated
BeanFactory是最顶层也是最基本的工厂接口,定义了基本的获取Bean的方法,并定义了获取Bean属性的方法。
BeanFactory的直接继承接口:
HierarchicalBeanFactory
为实现bean工厂的层级关系提供支持,定义了BeanFactory getParentBeanFactory()
方法;比如常见的Web应用中,ContextLoaderListener创建的容器为父容器,而DispatcherServlet创建的容器为子容器。
容器有父子之分,父容器对子容器可见,子容器对父容器不可见。
AutowireCapableBeanFactory
提供自动装配Bean的能力,主要方法为void autowireBean(Object existingBean)
。
autowire包含4中模式:
no:默认值,Spring建议使用该值,即我们在配置中显式指明其依赖,而不是靠Spring根据类型或名字来判断
byName:根据依赖Bean的名字去获取依赖Bean
byType:根据依赖Bean的类型去获取依赖Bean
constructor:在构造时,按照依赖Bean的类型去获取依赖Bean
ListableBeanFactory
BeanFactory可以提供getBeanByName或者getBeanByType的能力,而ListableBeanFactory还可以枚举所有的Bean实例。
ConfigurableBeanFacory:提供对BeanFactory的配置功能,比如BeanFactory的父级BeanFactory是哪个,BeanFactory使用哪个ClassLoader去加载Bean,是否需要缓存Bean的元信息,解析Bean时使用哪个EL表达式解析器,BeanFactory有哪些BeanPostProcessor等等。
ConfigurableListableBeanFactory