说我需要依赖Spring的几个实现。我有一个AccountService
界面和两个实现:DefaultAccountServiceImpl
和SpecializedAccountServiceImpl
。
这怎么可能(注入一个或另一个实现)在Spring?
以下注射使用哪种实施方式?
@Autowired
private AccountService accountService;
答案 0 :(得分:19)
广告。 1:您可以使用@Qualifier
annotation或使用@Resource
进行自动装配,而不是@Autowired
,默认为字段名称而不是类型。
广告。 2:它将在运行时失败,说两个bean正在实现此接口。如果您的其中一个bean另外annotated with @Primary
,则在按类型自动装配时将首选。
答案 1 :(得分:14)
@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/