Spring IOC w/ generics - вводить зависимости на основе параметра типа зависимого

Я хочу создать экземпляр универсального bean-компонента с параметром типа, и иметь правильные зависимости, связанные с этим параметром типа.

Предположим, у меня есть:

@Named
public Parent<T> {

   @Inject
   Parent(Child<T> c) {
          ...
   }

}

public interface Child<T> {}

@Named
public class ChildString implements Child<String> {} 

@Named
public class ChildInteger implements Child<Integer> {}

И тогда я хочу использовать Parent, как это:

@Named
public class UseParent {

   @Inject
   Parent<String> p;

}

Spring будет жаловаться на "ожидаемый единственный соответствующий боб, но найден 2: childString, childInteger".

Как лучше всего связать мои бобы в этом сценарии?

1 ответ

Я не нашел удовлетворительного способа сделать это. Решением, которое я сейчас использую, является создание подкласса Parent, который задает общий тип, например:

@Named
public ParentString {

   @Inject
   ParentString(Child<String> c) {
          super(c);
   }

}

@Named
public class UseParent {

   @Inject
   ParentString p;

}
Другие вопросы по тегам