处理一个Spring bean /接口的几个实现

时间:2012-08-02 12:06:50

标签: java spring interface

说我需要依赖Spring的几个实现。我有一个AccountService界面和两个实现:DefaultAccountServiceImplSpecializedAccountServiceImpl

  1. 这怎么可能(注入一个或另一个实现)在Spring?

  2. 以下注射使用哪种实施方式?

    @Autowired
    private AccountService accountService;
    

2 个答案:

答案 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/