1、继承关系
2、主要功能
AutowireCapable -- 有自动装配能力的
在 BeanFactory 的基础上,增加了下列功能:
- 关于自动装配策略的4个常数
- 创建和填充外部bean实例的典型方法
- 对bean生命周期进行细粒度控制的专门方法
- 解析注入点的委托方法
3、源码
public interface AutowireCapableBeanFactory extends BeanFactory {
//没有外部定义自动装配
int AUTOWIRE_NO = 0;
//通过名字,自动装配bean属性
int AUTOWIRE_BY_NAME = 1;
//通过type,自动装配bean属性
int AUTOWIRE_BY_TYPE = 2;
//自动装配 被满足的构造函数
int AUTOWIRE_CONSTRUCTOR = 3;
//通过beanClass来确定合适的装配策略
@Deprecated
int AUTOWIRE_AUTODETECT = 4;
//-------------------------------------------------------------------------
// 创建和填充外部bean实例的典型方法
//-------------------------------------------------------------------------
//根据beanClass来创建bean实例
<T> T createBean(Class<T> beanClass) throws BeansException;
//填充bean实例,通过应用实例化后回调 和 bean属性后处理(如注解驱动的注入)
//主要用于(重新)填充注解字段和方法,无论是新实例还是反序列化实例
void autowireBean(Object existingBean) throws BeansException;
//配置给定的原始bean
//自动连接bean属性、应用bean属性值、应用工厂回调,应用所有的bean后处理器
Object configureBean(Object existingBean, String beanName) throws BeansException;
//-------------------------------------------------------------------------
// 对bean生命周期进行细粒度控制的专门方法
//-------------------------------------------------------------------------
//使用指定的autowire策略 完全创建给定类的新bean实例。此处支持此接口中定义的所有常量
Object createBean(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;
//用指定的autowire策略 实例化给定类的新bean实例。此处支持此接口中定义的所有常量
Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;
//按名称或类型自动装配 给定bean实例的bean属性
void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck)
throws BeansException;
//将具有给定名称的bean定义的属性值 应用于给定的bean实例
//bean定义可以定义一个完全独立的bean,重用其属性值,也可以只定义用于现有bean实例的属性值。
void applyBeanPropertyValues(Object existingBean, String beanName) throws BeansException;
//初始化给定的原始bean,应用工厂回调。同时应用所有的bean后处理器
Object initializeBean(Object existingBean, String beanName) throws BeansException;
//在初始化bean之前,先调用它们的postprocessorbeforeiinitialization方法。
//返回的bean实例可以是原始实例的包装器
Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)
throws BeansException;
//在初始化bean之后,先调用它们的postprocessorbeforeiinitialization方法。
//返回的bean实例可以是原始实例的包装器
Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName)
throws BeansException;
//销毁给定的bean实例
void destroyBean(Object existingBean);
//-------------------------------------------------------------------------
// 解析注入点的委托方法
//-------------------------------------------------------------------------
//解析唯一匹配给定对象类型(如果有)的bean实例,包括其bean名称
<T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException;
//根据此工厂中定义的bean解析指定的依赖关系
@Nullable
Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName) throws BeansException;
@Nullable
Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName,
@Nullable Set<String> autowiredBeanNames, @Nullable TypeConverter typeConverter) throws BeansException;
}
4、子类 | 接口