AbstractBeanDefinition屬性一覽

Spring把bean的屬性相關的封裝成BeanDefinition

BeanDefinition

可以看到BeanDefinition是一個接口,其方法實現在AbstractBeanDefinition

public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccessor implements BeanDefinition, Cloneable {
    ...省略靜態變量以及final變量
    private volatile Object beanClass;
    //bean的作用範圍
    private String scope;
    //是否是抽象類
    private boolean abstractFlag;
    //是否延遲加載,對應bean的lazy-init
    private boolean lazyInit;
    /**
    *   AUTOWIRE_NO = 0;
    *   AUTOWIRE_BY_NAME = 1;
    *   AUTOWIRE_BY_TYPE = 2;
    *   AUTOWIRE_CONSTRUCTOR = 3;
    *   自動注入模式
    */
    private int autowireMode;
    //依賴檢查,Spring3.0後啓用這屬性
    private int dependencyCheck;
    //用來表示一個bean的實例化依靠另一個bean先實例化,對應bean屬性depend-on
    private String[] dependsOn;
    //autowire-candidate屬性設置爲false,這樣容器在查找自動裝配對象時,將不考慮該bean,但該bean本身還是可以自動注入其他bean
    private boolean autowireCandidate;
    //自動裝配出現多個bean候選者是,將作爲首選者,對應bean屬性primary
    private boolean primary;
    //用於記錄Qualifier,對應子元素qualifier
    private final Map<String, AutowireCandidateQualifier> qualifiers;
    //允許訪問非公開的構造器和方法,程序設置
    private boolean nonPublicAccessAllowed;
    //是否一個寬鬆的模式解析構造函數
    private boolean lenientConstructorResolution;
    //記錄構造函數注入屬性,對應bean屬性constructor-arg
    private ConstructorArgumentValues constructorArgumentValues;
    //普通屬性集合
    private MutablePropertyValues propertyValues;
    //方法重寫持有者,記錄lookup-method、replaced-method元素
    private MethodOverrides methodOverrides;
    //對應bean屬性factory-bean
    private String factoryBeanName;
    //對應bean屬性factory-method
    private String factoryMethodName;
    //對應bean屬性init-method
    private String initMethodName;
    //對應bean屬性destroy-method
    private String destroyMethodName;
    private boolean enforceInitMethod;
    private boolean enforceDestroyMethod;
    //是用戶定義的而不是應用程序本身定義時爲false,創建AOP時爲true,程序設置
    private boolean synthetic;
    /**
     *  ROLE_APPLICATION = 0 :用戶
     *  ROLE_SUPPORT = 1:某些複雜配置一部分
     *  ROLE_INFRASTRUCTURE = 2:完全內部使用,與用戶無關
     *  定義這個bean的應用
     */ 
    private int role;
    //bean的描述
    private String description;
    //bean定義的資源
    private Resource resource;
    ...省略getter、setter
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章