spring@autowired注解

上传人:第*** 文档编号:32697483 上传时间:2018-02-12 格式:DOCX 页数:11 大小:45.92KB
返回 下载 相关 举报
spring@autowired注解_第1页
第1页 / 共11页
spring@autowired注解_第2页
第2页 / 共11页
spring@autowired注解_第3页
第3页 / 共11页
spring@autowired注解_第4页
第4页 / 共11页
spring@autowired注解_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《spring@autowired注解》由会员分享,可在线阅读,更多相关《spring@autowired注解(11页珍藏版)》请在金锄头文库上搜索。

1、 SpringAutowired 注解自 Spring 诞生以来,的 autowire 和 dependency-check 属性便一直存在。当 JDK 5.0 正式发布后,Spring 针对 dependency-check 属性引入了对应的 Required。同理,它针对 autowire 属性引入了对应的Autowired 注解,其定义摘录如下。 Java 代码 1. Retention(RetentionPolicy.RUNTIME) 2. Target(ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD) 3.

2、 public interface Autowired 4. 5. /是否必须满足依赖性检查 6. boolean required() default true; 7. java view plaincopy1. Retention(RetentionPolicy.RUNTIME) 2. Target(ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD) 3. public interface Autowired 4. 5. /是否必须满足依赖性检查 6. boolean required() default true

3、; 7. Autowired 注解能够作用于构建器、属性、方法。这里的方法不局限于设值方法,即setter 方法,常见的各种方法都可以应用这一注解。比如,位于 autowiringdemo 项目中的TestBean1 类的 testBean2 和 testBean3 属性应用了这一注解,具体如下。 Java 代码 1. Autowired(required=false) 2. private TestBean2 testBean2; 3. 4. Autowired 5. private TestBean3 testBean3; java view plaincopy1. Autowired(r

4、equired=false) 2. private TestBean2 testBean2; 3. 4. Autowired 5. private TestBean3 testBean3; 为启用这一注解,AutowiredAnnotationBeanPostProcessor 必须定义在 XML 配置文件中,示例如下,摘自 autowired.xml。运行时,testBean2 和 testBean3 受管 Bean 会自动注入到 testBean1 中。开发者是否注意到Autowired 暴露的 required 属性,这是承担着依赖性检查任务的重要属性。默认时,凡是应用了Autowire

5、d 注解的属性和方法都必须找到合适的协作者,否则 DI 容器会抛出异常,通过调整 required 属性取值能够改变这一行为。Java 代码 1. 2. 3. 4. 5. 6. java view plaincopy1. 2. 3. 4. 5. 6. 下面给出了应用于设值方法的Autowired 注解。 Java 代码 1. Autowired(required=false) 2. public void setTestBean2(TestBean2 testBean2) 3. this.testBean2 = testBean2; 4. 5. 6. Autowired 7. public v

6、oid setTestBean3(TestBean3 testBean3) 8. this.testBean3 = testBean3; 9. java view plaincopy1. Autowired(required=false) 2. public void setTestBean2(TestBean2 testBean2) 3. this.testBean2 = testBean2; 4. 5. 6. Autowired 7. public void setTestBean3(TestBean3 testBean3) 8. this.testBean3 = testBean3; 9

7、. 下面给出了应用于构建器的Autowired 注解。 Java 代码 1. Autowired(required=false) 2. public TestBean1(TestBean2 tb2, TestBean3 tb3) 3. this.testBean2 = tb2; 4. this.testBean3 = tb3; 5. java view plaincopy1. Autowired(required=false) 2. public TestBean1(TestBean2 tb2, TestBean3 tb3) 3. this.testBean2 = tb2; 4. this.t

8、estBean3 = tb3; 5. 下面给出了应用于普通方法的Autowired 注解。 Java 代码 1. Autowired 2. public void preparedBean(TestBean2 tb2, TestBean3 tb3) 3. this.testBean2 = tb2; 4. this.testBean3 = tb3; 5. java view plaincopy1. Autowired 2. public void preparedBean(TestBean2 tb2, TestBean3 tb3) 3. this.testBean2 = tb2; 4. this

9、.testBean3 = tb3; 5. 除了能够自动注入普通受管 Bean 外,Autowired 注解还能够注入一些特殊对象,比如受管 Bean 所在 DI 容器中的各种元数据对象,示例如下。Autowired 将当前 DI 容器注入。Java 代码 1. Autowired 2. private ApplicationContext ac; java view plaincopy1. Autowired 2. private ApplicationContext ac; 在Autowired 的 required 属性与Required 注解间进行取舍 Required 是专门用于依赖性

10、检查的注解,而Autowired 注解的 required 属性也能够用来承担依赖性检查工作。一旦Required 应用到目标设值方法,则 DI 容器必须成功调用这一设值方法,Required 注解才认为依赖性条件得到满足,否则将抛出异常。相比之下,当我们将Autowired 注解的 required 属性设置为 false 时,即使未找到合适的协作者,异常都始终不会被抛出。 5.6.5 细粒度控制 Autowiring 策略 当多个协作者满足 autowire 注入条件时,我们可以启用元素的 primary 属性,从而避免异常的抛出。但是,primary 属性不能够满足企业级应用的复杂需求,

11、比如多个同一类型的不同协作者需要注入到同一受管 Bean 的时候。 下面给出了某 XML 配置示例。 Java 代码 1. 2. 3. 4. 5. java view plaincopy1. 2. 3. 4. 5. 现在希望将它们分别注入到下面给出的属性中。显然,启用 primary 属性是不行的,因为一旦启用它,testBean2a、testBean2b、testBean2c 将引用到同一受管 Bean 中。 Java 代码 1. Autowired 2.private TestBean2 testBean2a; 2. 3. Autowired 4. private TestBean2 te

12、stBean2b; 5. 6. Autowired 7. private TestBean2 testBean2c; java view plaincopy1. Autowired 2.private TestBean2 testBean2a; 2. 3. Autowired 4. private TestBean2 testBean2b; 5. 6. Autowired 7. private TestBean2 testBean2c; 为此,我们需要启用元素及Qualifier 注解。调整后的 XML 配置示例如下。 Java 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 10

13、. 11. java view plaincopy1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 相应地,属性的定义也需要作相应的调整,下面给出了代码示例。各个Qualifier 注解分别指定了待注入的受管 Bean,比如2a表示要注入的 value 属性取值为2a 的目标受管 Bean。 Java 代码 1. Autowired 2. Qualifier(2a) 3. private TestBean2 testBean2a; 4. 5. Autowired 6. Qualifier(2b) 7. private TestBean2 testBean2b; 8. 9.

14、Autowired 10.Qualifier(2c) 10. private TestBean2 testBean2c; java view plaincopy1. Autowired 2. Qualifier(2a) 3. private TestBean2 testBean2a; 4. 5. Autowired 6. Qualifier(2b) 7. private TestBean2 testBean2b; 8. 9. Autowired 10.Qualifier(2c) 10. private TestBean2 testBean2c; Qualifier 注解能够作用于属性、参数、类、其他注解等地方,比如下面给出了参数级的使用示例。 Java 代码 1. Autowired 2. private void preparedBean(Qualifier(2a) TestBean2 testBean2a,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号