Вы можете добавить пружинные бобы в два отдельных List
Первый подход: Если у вас есть только каждый из них, назовите их по-разному и используйте @Qualifier
Сервисный интерфейс
public interface ServiceInterf {
}
ImplementOne
@Service("implementOne")
public class ImplementOne implements ServiceInterf {
}
ImplementTwo
@Service("implementTwo")
public class ImplementTwo implements ServiceInterf {
}
И вы можете использовать @Qualifier
@Autowired
@Qualifier("implementOne")
private List<ServiceInterf> implementOne;
@Autowired
@Qualifier("implementTwo")
private List<ServiceInterf> implementTwo;
Второй подход: Если у вас их несколько, вы можете объявить их в классе конфигурации, используя @Qualifier
5.2,Использование @Qualifier для выбора бинов
@Bean
@Qualifier("implementOne")
public ServiceInterf getServiceInterf1() {
return new ImplementOne();
}
@Bean
@Qualifier("implementOne")
public ServiceInterf getServiceInterf2() {
return new ImplementOne();
}
@Bean
@Qualifier("implementTwo")
public ServiceInterf getServiceInterf3() {
return new ImplementTwo();
}
@Bean
@Qualifier("implementTwo")
public ServiceInterf getServiceInterf4() {
return new ImplementTwo();
}
А также, если вы хотите сделать их в Map
, используйте конструктор инъекций
private Map<String, List<ServiceInterf>> mapOfLists;
@Autowired
public TestMap(@Qualifier("implementOne") List<ServiceInterf> implementOne,
@Qualifier("implementTwo") List<ServiceInterf> implementTwo) {
mapOfLists = Map.of("implementOne",implementOne,"implementTwo",implementTwo);
// Map.of is from java 9
}