Spring笔记
bean的定义部分相关的一些类的继承结构图
阅读以上的接口和类并且的做下笔记
AttributeAccessor:
主要的几个方法的作用就是设置属性,获取属性,移除属性,判断是否含有属性,获取所有属性的名字的数组。
AttributeAccessorSupport:
实现了AttributeAccesor的方法,使用一个LinkedHashMap<String,Object>来存储属性。只增加了一个方法
BeanMetadataElement:
这个接口只有一个方法getSource()。返回一个“配置源”对象。
BeanMetadataAttributeAccessor:
继承了父类AttributeAccessorSupport并实现了BeanMetadataElement。在额外自己增加了两个方法
BeanDefinition:
这个接口描述了一个bean实例,包括属性值,构造方法参数,还有实现了提供的更多信息。这是仅仅是最小的接口,它允许BeanFactoryPostProcessor接口对它的属性值进行修改,还有其他的bean metadata。
用字符串常量“singleton” 和 “prototype”来描述这个bean是单例的还是原生的。
设置懒加载,判断是否懒加载。
设置父bean的类名称,设置这个bean的类名称,需要注意的是这里类名并不是严格的指原来的类名,而是用原来的类修改后的。
设置这个bean是不是的其它bean在装配时的候选者。意思就是说其它bean在装配时需要用到它,它对应的类是其它类的属性,不过这仅仅用于基类的装配。对于通过名称显示引用的不起作用。即使指定的bean没有被标为自动装配候选者(autowiring candidate)也能够装配。
设置这个bean时候是首选的候选者。比如,如果有多个bean都符合装配要求的时候,也就是这么多个bean不知道选谁的时候,就选它,因为它是首选候选者。
设置工厂bean的名称。
设置工厂方法的名称
获取最原始BeanDefinition。
AbstractBeanDefinition:
这个bean比较重要,它继承了BeanMetadataAttributeAccessor并实现了BeanDefinition接口。这个类是具体实现类的基类,就想快要羽翼丰满的小鸟,再长大一点就会飞了。bean的实例对应的类继承这个类,并稍加修饰就可以实例化创建一个bean实例了。
许多方法都很重要,就不贴了。
RootBeanDefinition:
GenericBeanDefinition:
EnvironmentCapable:
这个接口表示包含并且暴露org.springframework.core.env.Environment的引用。
这个接口只有一个方法
BeanDefinitionReader:
这个接口的工作就是负责加载bean定义。它的实现类有XmlBeanDefinitionReader.
XmlBeanDefinitionReader: