Spring IoC 容器(三)AutowireCapableBeanFactory

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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章