Java Beans
Spring管理对象是以bean为颗粒度,在最初设计时其实是特指Java beans,因此之前的注入也几乎是清一色的set注入,直到聪明的大脑们引入了Annotation后两者才有了明显差异,慢慢进化出Spring特有的bean规范。
本篇先从设计者的初衷Java Beans开始,理清楚set的注入原理,然后再(如)往(果)下(有)探(时)寻(间)Annotation注入。
Java beans规范主要有三点:
- 有一个公有的无参构造器
- 属性可以通过get、set、is(可以替代get,用在布尔型属性上)方法或遵循特定命名规范的其他方法访问
- 可序列化
Sun之所以指定beans规范,很大程度上是为IDE准备的——IDE可以用可视化的方式设置bean的属性。
Java bean规范通过java.beans.PropertyEditor设置bean属性,通过BeanInfo描述了JavaBean哪些属性是可定制以及可定制属性与PropertyEditor的对应关系(propertyName->editor)。
BeanInfo与JavaBean之间通过两者之间规范的命名确立,对应JavaBean的BeanInfo采用如下的命名规范:BeanInfo,如Car对应的BeanInfo为CarBeanInfo。
JDK提供内省(Introspector