当一个接口有多个实现类时,@Autowired会出问题吗?

十月阳光 发布于 2015/03/24 11:25
阅读 17K+
收藏 1

@Autowired是按类型进行装配的,那么我一个接口UserInterface,有多个实现类AImpl,BImpl....这些实现类我都加入了Spring容器,当我在一个类中使用如下语句:

@Autowired
private IUserInterface userInterface;



那么按找类型来装配,到底是找到哪个实现类进行装配?

这个地方是不是应该用@Resource(name="...")来装配?

加载中
0
ddoonnaahhuuee
ddoonnaahhuuee

当容器中存在多个 Bean 的类型与需要注入的相同时,注入将不能执行,我们可以给 @Autowired 增加一个候选值,做法是在 @Autowired 后面增加一个 @Qualifier 标注,提供一个 String 类型的值作为候选的 Bean 的名字

@Autowired(required=false) //注入不成功也不会发生异常
 @Qualifier("AImpl")

十月阳光
十月阳光
@Qualifier我知道。 不过这样看来,使用@Resource(name="")更值得推荐了
返回顶部
顶部