spring学习之源码分析--AutowireCapableBeanFactory

AutowireCapableBeanFactory实现了BeanFactory接口,负责bean生命周期的管理。咱们先看看几个常量segmentfault

类结构

image.png

字段

int AUTOWIRE_NO = 0;//表示没有外部定义的自动装配
int AUTOWIRE_BY_NAME = 1;//经过名称指示自动装配bean属性(适用于Bean全部属性的setter)
int AUTOWIRE_BY_TYPE = 2;//经过类型指示自动装配bean属性(适用于Bean全部属性的setter)
int AUTOWIRE_CONSTRUCTOR = 3;//构造函数
int AUTOWIRE_AUTODETECT = 4;//经过bean类的内省肯定适当的自动装配策略,已弃用
String ORIGINAL_INSTANCE_SUFFIX = ".ORIGINAL";//用于没有代理的时候,也能强制返回实例

方法解析

bean的建立app

//autowireMode就是上面的常量,dependencyCheck是否对依赖进行检查
Object createBean(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;
<T> T createBean(Class<T> beanClass) throws BeansException;

bean的初始化函数

Object initializeBean(Object existingBean, String beanName) throws BeansException;

bean的后置处理器ui

Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName)
            throws BeansException;
Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)
            throws BeansException;

bean的销毁spa

void destroyBean(Object existingBean);

自动装配bean代理

Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;
void autowireBean(Object existingBean) throws BeansException;
void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck)
            throws BeansException;

配置beancode

Object configureBean(Object existingBean, String beanName) throws BeansException;

解析beanblog

Object resolveBeanByName(String name, DependencyDescriptor descriptor) throws BeansException;
Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName) throws BeansException;
Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName,
            @Nullable Set<String> autowiredBeanNames, @Nullable TypeConverter typeConverter) throws BeansException;
<T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException;
相关文章
相关标签/搜索