接口编程解决
- 使用具体的对象而不是接口(不推荐)
- 使用首选Bean(
@primary
)
注意同时只能有一个@primary
- 使用@Qualifier()注解
- 接口实现类(类声明的地方)上使用
@Qualifier(id)
- 接口声明的地方(装配这个对象时)使用同样的
@Qualifier(id)
,(id要相同)
- 接口实现类(类声明的地方)上使用
- 在接口实现类(类声明的地方)上使用
@Component(id)
接着在接口声明(装配这个对象时)的地方使用@Qualifier(id)
,(id要相同) - 不使用id,直接是
@Component
,这种写法较为方便,它默认id是首字母小写的类名(比如Student的默认id是student)
接着在接口声明的地方使用@Qualifier(student)
Java标准解决
类似上面的4,5,这里在接口声明的地方(装配这个对象时),使用一个Java自带的解决方案(而不是spring):@Resource(name="student")
(javax.annotation.Resource
)