Spring Annotation(一)
Spring Annotation(一)基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置 Bean、装配 Bean 的功能,您可以使用基于注释的 Spring IoC 替换原来基于 XML 的配置。本文通过实例详细讲述了 Spring 2.5 基于注释 IoC 功能的使用。<!----><!----><!---->
?
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。