Spring Annotation(一)
?
Car 拥有两个属性:
清单 2. Car.java?
Boss 拥有 Office 和 Car 类型的两个属性:
清单 3. Boss.java?
我们在 Spring 容器中将 Office 和 Car 声明为 Bean,并注入到 Boss Bean 中:下面是使用传统 XML 完成这个工作的配置文件 beans.xml:
清单 4. beans.xml 将以上三个类配置成 Bean?
当我们运行以下代码时,控制台将正确打出 boss 的信息:
清单 5. 测试类:AnnoIoCTest.java?
这样,当 Spring 容器启动时,
AutowiredAnnotationBeanPostProcessor?将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有?@Autowired?注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。按照上面的配置,Spring 将直接采用 Java 反射机制对 Boss 中的?
car?和?office?这两个私有成员变量进行自动注入。所以对成员变量使用?@Autowired?后,您大可将它们的 setter 方法(setCar()?和?setOffice())从 Boss 中删除。当然,您也可以通过?
@Autowired?对方法或构造函数进行标注,来看下面的代码:
清单 8. 将 @Autowired 注释标注在 Setter 方法上package com.baobaotao;public class Boss { private Car car; private Office office; @Autowired public Boss(Car car ,Office office){ this.car = car; this.office = office ; } …}?
由于?
Boss()?构造函数有两个入参,分别是?car?和?office,@Autowired?将分别寻找和它们类型匹配的 Bean,将它们作为?Boss(Car car ,Office office)?的入参来创建?Boss?Bean。