您的位置:首页 > 编程语言 > Java开发

Spring框架之IoC容器—AutowireCapableBeanFactory接口

2017-10-27 17:12 423 查看

一、AutowireCapableBeanFactory简介

AutowireCapableBeanFactory是BeanFactory接口的扩展,由那些能够实现自动匹配的Bean工厂来实现(但没被ApplicationContext实现),提供针对已存在Bean实例的服务。

通常情况下,AutowireCapableBeanFactory接口不用于应用程序代码。通过ApplicationContext的getAutowireCapableBeanFactory方法就很容易访问该接口,也可通过实现BeanFactoryAware(通过它当运行在ApplicationContext暴露内部BeanFactory接口的功能访问AutowireCapableBeanFactory,仅仅需要将BeanFactory转换为AutowireCapableBeanFactory)。

整合其他框架的代码是此接口优势所在,它可以连接和填充那些生命周期不被Spring管理的已存在的bean实例。

二、AutowireCapableBeanFactory源码详解

public interface AutowireCapableBeanFactory extends BeanFactory {

/**
* 表示不进行自动装配
*/
int AUTOWIRE_NO = 0;

/**
* 表示通过Bean名称进行自动装配
*/
int AUTOWIRE_BY_NAME = 1;

/**
* 表示通过Bean类型进行自动装配
*/
int AUTOWIRE_BY_TYPE = 2;

/**
* 表示通过构造函数进行自动装配
*/
int AUTOWIRE_CONSTRUCTOR = 3;

/**
* 表示自动选择适当匹配策略
*/
int AUTOWIRE_AUTODETECT = 4;

//-------------------------------------------------------------------------
// 典型的创建和填充外部Bean实例的方法
//-------------------------------------------------------------------------

/**
* 根据指定类型创建Bean实例
*/
<T> T createBean(Class<T> beanClass) throws BeansException;

/**
*
*/
void autowireBean(Object existingBean) throws BeansException;

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

/**
*
*/
Object resolveDependency(DependencyDescriptor descriptor, String beanName) throws BeansException;

//-------------------------------------------------------------------------
// Bean生命周期中细粒度控制的特殊方法
//-------------------------------------------------------------------------

/**
*
*/
Object createBean(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;

/**
*
*/
Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;

/**
*
*/
void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck)
throws BeansException;

/**
*
*/
void applyBeanPropertyValues(Object existingBean, String beanName) throws BeansException;

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

/**
*
*/
Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)
throws BeansException;

/**
*
*/
Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName)
throws BeansException;

/**
*
*/
void destroyBean(Object existingBean);

/**
*
*/
Object resolveDependency(DependencyDescriptor descriptor, String beanName,
Set<String> autowiredBeanNames, TypeConverter typeConverter) throws BeansException;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: