假设我需要依赖Spring bean 的几个实现。我有一个AccountService
接口和两个实现:DefaultAccountServiceImpl
和SpecializedAccountServiceImpl
.
在 Spring 中这怎么可能(注入一个或另一个实现)?
以下注入将使用哪种实现?
@Autowired private AccountService accountService;
广告。1:您可以使用@Qualifier
注释或自动装配使用@Resource
,而不是@Autowired
默认为字段名称而不是类型。
广告。2:它会在运行时失败,说两个 bean 正在实现这个接口。如果您的某个 bean 还带有 注释@Primary
,则在按类型自动装配时将首选它。
@Autowired
@Qualifier("impl1")
BaseInterface impl1;
@Autowired
@Qualifier("impl2")
BaseInterface impl2;
@Component(value="impl1")
public class Implementation1 implements BaseInterface {
}
@Component(value = "impl2")
public class Implementation2 implements BaseInterface {
}
For full code: https://github.com/rsingla/springautowire/