GenericBeanDefinition的类层次图:
XML中所有的配置都可以在GenericBeanDefinition的实例类中找到相应的配置。
GenericBeanDefinition只是子类实现,而大部分通用属性都保存在AbstractBeanDefinition中。
在GenericBeanDefinition基本上就只多了parentName属性。
private String parentName;
父类AbstractBeanDefinition中,忽略静态变量和final常量:
private volatile Object beanClass;//bean的类型
private String scope;//bean的作用范围
private boolean abstractFlag;//是否是抽象类
private boolean lazyInit;//是否延迟加载
private int autowireMode; //自动注入模式
private int dependencyCheck;//依赖检查,spring 3.0后弃用
private String[] dependsOn; //表示这个bean,依赖于其它beans先实例化
private boolean autowireCandidate;//设为false,则容器在自动装配时,将不考虑该bean(即这个bean不会作为其它bean自动装配的候选者),但是这个bean还可以自动装配其它bean
private boolean primary;//自动装配出现多个bean时,将它作为首选者
private final Map<String, AutowireCandidateQualifier> qualifiers;//用于记录Qualifier
private boolean nonPublicAccessAllowed;//允许访问非公开的构造器和方法
private boolean lenientConstructorResolution;//是否以宽松的模式解析构造函数,默认为true
private String factoryBeanName;//指定工厂类和工厂方法
private String factoryMethodName;
private ConstructorArgumentValues constructorArgumentValues;//记录构造函数注入属性
private MutablePropertyValues propertyValues;//普通属性集合
private MethodOverrides methodOverrides; //方法重写的持有者
private String initMethodName; //初始化方法
private String destroyMethodName; //销毁方法
private boolean enforceInitMethod; //是否执行初始化方法
private boolean enforceDestroyMethod;//是否执行销毁方法
private boolean synthetic;//是否是用户定义的而不是应用程序本身定义的,创建AOP时为true
private int role;//定义这个bean的使用,application:用户,infrastructure:完全内部使用,与用户无关;support:某些复杂配置的一部分
private String description;//bean的描述
private Resource resource;//这个bean定义的资源。