文章目录
spring基础 核心类DefaultListableBeanFactory(三):AbstractAutowireCapableBeanFactory类
DefaultListableBeanFactory是整个bean加载的核心部分,是spring注册及加载bean的默认实现。
DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory类,实现了ConfigurableListableBeanFactory和BeanDefinitionRegistry接口。
public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory
implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable {
}
DefaultListableBeanFactory类的层次结构图:
由上面的层次结构图发现:
DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory类,实现了ConfigurableListableBeanFactory和BeanDefinitionRegistry接口。
一.AbstractAutowireCapableBeanFactory类
实例化bean和依赖注入是在AbstractBeanFactory的入口,但是实际还是在AbstractAutowireCapableBeanFactory这个类中实现。
查看AbstractAutowireCapableBeanFactory类:
public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFactory
implements AutowireCapableBeanFactory {
...
@Override
protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)
throws BeanCreationException {
...
}
protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args)
throws BeanCreationException {
...
}
protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) {
...
}
protected BeanWrapper instantiateBean(final String beanName, final RootBeanDefinition mbd) {
...
}
protected Object initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinition mbd) {
...
}
protected void invokeInitMethods(String beanName, final Object bean, @Nullable RootBeanDefinition mbd)
throws Throwable {
...
}
}
Bean的实例化过程:
- 先执行Bean的构造函数
- 执行Bean的属性装配
- 执行Bean的前置处理器
- 执行Bean的初始化方法
- 执行Bean的后置处理器