如果一个接口存在多个实现类,而且多个实现类都被注入到spring容器中了,如果需要将它们都注入到同一个bean中或者想要动态获取某一个bean的时候会发现一些问题,首先是如果只是单独注册一个bean而且还是按照"ByType"注册的,那么还出现异常。
这个时候如果一定要将多个bean都注入在一个bean中注入同一个接口的多个实现类的方法,大体思路有两种,一种是通过map将多个bean都统一注入到bean中,还有一种是通过spring的上下文对象将需要的bean拿出来。
- Map<String, [接口]>
- ApplicationContext
假设有如下接口
public interface Test {
public void test();
}
有如下两个实现类需要注入spring容器
@Component
public class TestA implements Test{
@Override
public void test() {
System.out.println("TestA");
}
}
@Component
public class TestB