spring的自动装配和精确装配
本文内容纲要:spring的自动装配和精确装配
spring提供了@Autowired Annotation来指定自动装配,使用@Autowired可以标注setter方法、普通方法、Field、函数形参和构造器等。
例如下代码:
1 package cn.zj.qiao.spring.beans; 2
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.stereotype.Component;
5
6 import cn.zj.qiao.spring.interfaces.Axe;
7 import cn.zj.qiao.spring.interfaces.Person;
8
9 @Component
10 public class Chinese implements Person {
11
12 private Axe axe;
13
14 @Autowired
15 public void setAxe(Axe axe){
16 this.axe = axe;
17 }
18 public Axe getAxe(){
19 return axe;
20 }
21
22 @Override
23 public void useAxe() {
24 System.out.println(axe.chop());
25 }
26
27 }
上面的代码使用@Autowired 指定setAxe()方法进行自动装配,spring将会自动搜索容器中类型为Axe的Bean实例,并将该Bean实例作为setAxe()方法的参数传入,此时spring默认的装配策略为byType。同样的@Autowired可以修饰普通的方法,Field和构造器等,且其默认的装配策略均为byType类型的装配。
为了实现精确的自动装配,spring提供了@Qualifier Annotation,通过使用@Qualifier,允许根据Bean的标识来指定自动装配,如下代码所示:
1 package cn.zj.qiao.spring.beans; 2
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.beans.factory.annotation.Qualifier;
5 import org.springframework.stereotype.Component;
6
7 import cn.zj.qiao.spring.interfaces.Axe;
8 import cn.zj.qiao.spring.interfaces.Person;
9
10 @Component
11 public class Chinese implements Person {
12
13 @Autowired
14 @Qualifier("steelAxe")
15 private Axe axe;
16
17 public void setAxe(Axe axe){
18 this.axe = axe;
19 }
20 public Axe getAxe(){
21 return axe;
22 }
23
24 @Override
25 public void useAxe() {
26 System.out.println(axe.chop());
27 }
28
29 }
如上代码所示,Axe axe Field将使用自动装配,且精确的指定了被装配Bean的实例的名称是steelAxe。
本文内容总结:spring的自动装配和精确装配
原文链接:https://www.cnblogs.com/binger/archive/2012/09/25/2701099.html
以上是 spring的自动装配和精确装配 的全部内容, 来源链接: utcz.com/z/296135.html