AutowireCapableBeanFactory
在BeanFactory
基礎上實現了對存在實例的管理。可以使用這個接口集成其它框架,捆綁並填充並不由Spring管理生命週期並已存在的實例。像集成WebWork的Actions 和Tapestry Page就很實用。
一般應用開發者不會使用這個接口,所以像ApplicationContext這樣的外觀實現類不會實現這個接口。如果真手癢癢可以通過ApplicationContext的getAutowireCapableBeanFactory接口獲取。
public interface AutowireCapableBeanFactory extends BeanFactory {
int AUTOWIRE_NO = 0; // 這個常量表明工廠沒有自動裝配的Bean
int AUTOWIRE_BY_NAME = 1; // 表明根據名稱自動裝配
int AUTOWIRE_BY_TYPE = 2; // 表明根據類型自動裝配
int AUTOWIRE_CONSTRUCTOR = 3; // 表明根據構造方法快速裝配
/** @deprecated */
@Deprecated
int AUTOWIRE_AUTODETECT = 4;
String ORIGINAL_INSTANCE_SUFFIX = ".ORIGINAL";
// 創建和填充外部bean實例的典型方法
<T> T createBean(Class<T> var1) throws BeansException;
// 自動裝配屬性,填充屬性值,使用諸如setBeanName,setBeanFactory這樣的工廠回調填充屬性,最好還要調用post processor
void autowireBean(Object var1) throws BeansException;
Object configureBean(Object var1, String var2) throws BeansException;
// 會執行bean完整的初始化,包括BeanPostProcessors和initializeBean
Object createBean(Class<?> var1, int var2, boolean var3) throws BeansException;
Object autowire(Class<?> var1, int var2, boolean var3) throws BeansException;
// 使用autowireBeanProperties裝配屬性
void autowireBeanProperties(Object var1, int var2, boolean var3) throws BeansException;
void applyBeanPropertyValues(Object var1, String var2) throws BeansException;
Object initializeBean(Object var1, String var2) throws BeansException;
Object applyBeanPostProcessorsBeforeInitialization(Object var1, String var2) throws BeansException;
Object applyBeanPostProcessorsAfterInitialization(Object var1, String var2) throws BeansException;
void destroyBean(Object var1);
<T> NamedBeanHolder<T> resolveNamedBean(Class<T> var1) throws BeansException;
Object resolveBeanByName(String var1, DependencyDescriptor var2) throws BeansException;
@Nullable
Object resolveDependency(DependencyDescriptor var1, @Nullable String var2) throws BeansException;
@Nullable
Object resolveDependency(DependencyDescriptor var1, @Nullable String var2, @Nullable Set<String> var3, @Nullable TypeConverter var4) throws BeansException;
}