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
}

猜你喜欢

转载自blog.csdn.net/seasonLai/article/details/82698679