SPRING-5.0.2.RELEASE源码系列4——AutowireCapableBeanFactory接口

1、继承关系

 

2、主要功能

AutowireCapable  --  有自动装配能力的

在 BeanFactory 的基础上,增加了下列功能:

  1.  关于自动装配策略的4个常数
  2. 创建和填充外部bean实例的典型方法
  3. 对bean生命周期进行细粒度控制的专门方法
  4. 解析注入点的委托方法

 

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、子类 | 接口

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值