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;
}