首页 > 其他 > 详细

@Autowired 注释对在哪里和如何完成自动连接提供了更多的细微的控制。

时间:2015-12-17 12:47:31      阅读:136      评论:0      收藏:0      [点我收藏+]

1、@Autowired 可以用在多个地方,在 setter 方法上,属性上 或者 带有多个参数的任意方法上。

Setter 方法中的 @Autowired.

当 Spring遇到一个在 setter 方法中使用的 @Autowired 注释,它会在方法中视图执行 byType 自动连接。

java

public class TextEditor {
   private SpellChecker spellChecker;
   @Autowired
   public void setSpellChecker( SpellChecker spellChecker ){
      this.spellChecker = spellChecker;
   }
}

Bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
   <context:annotation-config/>
   <bean id="textEditor" class="com.tutorialspoint.TextEditor"></bean>
   <bean id="spellChecker" class="com.tutorialspoint.SpellChecker"></bean>
</beans>

 

 

属性中的 @Autowired

在属性中使用 @Autowired 注释来除去 setter 方法。Spring 会将这些传递过来的值或者引用自动分配给那些属性。

java

public class TextEditor {
   @Autowired
   private SpellChecker spellChecker;
}

Bean.xml同上。

 

构造函数中的 @Autowired

构造函数使用 @Autowired 说明当创建 bean 时,可以消除在 XML 文件中的构造函数配置。

java

public class TextEditor {
   private SpellChecker spellChecker;
   @Autowired
   public TextEditor(SpellChecker spellChecker){
      this.spellChecker = spellChecker;
   }
}

Bean.xml同上。

 

@Autowired 的(required=false)选项

默认情况下,@Autowired 注释意味着依赖是必须的,它类似于 @Required 注释,然而,你可以使用 @Autowired 的(required=false) 选项关闭默认行为。

即使你不为 age 属性传递任何参数,下面的示例也会成功运行,但是对于 name 属性则需要一个参数。

java

public class Student {
   private Integer age;
   private String name;
   @Autowired(required=false)
   public void setAge(Integer age) {
      this.age = age;
   }  
   public Integer getAge() {
      return age;
   }
   @Autowired
   public void setName(String name) {
      this.name = name;
   }   
   public String getName() {
      return name;
   }
}

 

@Autowired 注释对在哪里和如何完成自动连接提供了更多的细微的控制。

原文:http://www.cnblogs.com/wangdapeng/p/5053564.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!