У меня есть следующая структура классов:
class A{
...
}
class B{
...
}
interface I<T>{
...
}
@Component("childA")
class ChildA implements I<A>{
. ..
}
@Component("childB")
class ChildB implements I<B>{
...
}
class Test {
@Autowired
@Qualifier("childA")
public I<A> childOfA;
}
Я получаю исключение не уникальным компонентом типа я для свойства childOfA
даже после использования квалификатора.
Я попытался использовать default-autowire = no
- он перепутался с другими частями кода.
Согласно документам Component
, значение представляет собой только "предлагаемое имя", а не определенный квалификатор. Если вы еще этого не сделали, попробуйте изменить его, чтобы явно указать Qualifier
, например:
@Component
@Qualifier("childA")
class ChildA implements I<A>{ ... }
@Component
@Qualifier("childB")
class ChildB implements I<B>{ ... }