处理一个 Spring Bean/接口的多个实现
假设我需要依赖Spring Bean的几个实现。我有一个接口和两个实现:和。AccountService
DefaultAccountServiceImpl
SpecializedAccountServiceImpl
这在春季如何可能(注入一个或另一个实现)?
-
以下注入将使用哪种实现?
@Autowired private AccountService accountService;
假设我需要依赖Spring Bean的几个实现。我有一个接口和两个实现:和。AccountService
DefaultAccountServiceImpl
SpecializedAccountServiceImpl
这在春季如何可能(注入一个或另一个实现)?
以下注入将使用哪种实现?
@Autowired
private AccountService accountService;
Ad. 1:您可以使用@Qualifier
注释或自动连线,而不是默认为字段名称而不是类型。@Resource
@Autowired
Ad. 2:在运行时会失败,因为有两个 bean 正在实现这个接口。如果其中一个 Bean 还附加了 @Primary
注释,则在按类型自动布线时将首选该 Bean。
@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/