@Autowired用来注解需要注入的类型,这里有一点值得提一下,Spring2.5的注解不支持基本类型的注入,如果涉及到基本类型的注入仍然要采用XML配置,个人认为这样做是很正确的,基本类型都是的注入是一些固定的值,如果使用注解来完成注入,那么使得代码和相应的值黏合在一起,不便于修改。@Autowired来注解DI时,如果有多个同类型的class,则可以结合@Qualifier注解来指定注入Bean的名称,如:
IUser接口:
public interface IUser {
public String describe();
}
2个实现类:
Father:
@Service
public class Father implements IUser {
private String name = "dabing";
public String describe() {
// TODO Auto-generated method stub
return "父亲是:" + this.name;
}
}
Son:
@Service
public class Son implements IUser {
private String name = "xiaobing";
public String describe() {
// TODO Auto-generated method stub
return "儿子是:" + this.name;
}
}
现在写一个类来测试一下注入情况:
Family:
@Service
public class Family {
@Autowired
private IUser user;
public String toString() {
return "家庭成员:" + user.describe();
}
}
在Family中需要注入一个IUser类型,这个时候如果测试Family类是否注入,肯定会报错如下:
expected single matching bean but found 2: [father, son]
表示有多个同样的类型,这个时候@Qualifier就显的十分重要了,增加注解最终如下:
@Service
public class Family {
@Autowired
@Qualifier("father")
private IUser user;
public String toString() {
return "家庭成员:" + user.describe();
}
}
这个时候使用@Qualifier注解显示地告诉Spring,我现在需要的是名称为father且类型为IUser的Bean,运行起来当然就一切正常了。