AbstractAutowireCapableBeanFactory 继承了AbstractBeanFactory,实现了AutowireCapableBeanFactory接口。
1、DefaultListableBeanFactory的作用
提供Bean的创建功能(通过构造器)、属性渲染、装配(包括自动装配)、初始化。处理运行时的Bean引用,解析已经管理的结果
调用初始化方法
2、DefaultListableBeanFactory实现的接口作用
AliasRegistry:制定别名的管理规则,定义了对alias的简单增删改等操作。
SimpleAlliasRegistry:用map作为alias的缓存,并对接口AliasRegistry进行实现。
SingletonBeanRegistry:定义对单例的注册以及获取。
DefaultSingletonBeanRegistry:对接口SingletonBeanRegistry各函数的实现。
FactoryBeanRegistrySupport:在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理功能。
DefaultListableBeanFactory 综合了接口的所有功能,主要负责了Bean注册后的处理逻辑。
3、属性字段
// 是默认bean创建策略,CglibSubclassingInstantiationStrategy需要一个cglib包,如果没有也可以正常运行,
因为,只有当方法注入需要生成子类时,才需要cglib
InstantiationStrategy instantiationStrategy
// 默认的参数名字解析策略,asm字节码技术
ParameterNameDiscoverer parameterNameDiscoverer
// 是否允许bean的循环引用,默认是true
boolean allowCircularReferences
// 忽略给定type的自动装配功能autowiring
final Set<Class<?>> ignoredDependencyTypes
// 忽略给定interface的自动装配功能autowiring
final Set<Class<?>> ignoredDependencyInterfaces
// 当前创建的bean名称,用于从用户指定的Supplier回调触发的对getBean等调用的隐式依赖项注册
NamedThreadLocal<String> currentlyCreatedBean
// 未完成的FactoryBean实例的高速缓存
Map<String, BeanWrapper> factoryBeanInstanceCache
// 过滤后的PropertyDescriptor的缓存:bean类到PropertyDescriptors数组
ConcurrentMap<Class<?>, PropertyDescriptor[]> filteredPropertyDescriptorsCache
4、主要方法
Object applyBeanPostProcessorsBeforeInitialization 调用BeanPostProcessor后置处理器实例对象初始化之前的处理方法
applyBeanPostProcessorsAfterInitialization() 调用BeanPostProcessor后置处理器实例对象初始化之后的处理方法