W CDI, mogę to zrobić:Czy jest odpowiednik kwalifikatora CDI @Default na wiosnę?
// Qualifier annotation
@Qualifier
@inteface Specific{}
interface A {}
class DefaultImpl implements A {}
@Specific
class SpecificImpl implements A {}
, a następnie w klasie:
@Inject
A default;
@Inject
@Specific
A specific;
Działa powodu @Default
eliminacjach automatycznie przypisany do punktów wtrysku nie podania żadnych kwalifikatorów.
Ale pracuję ze Spring i nie mogłem tego wykonać.
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException
Problemem jest to, że zastrzyki „Default” (bez kwalifikatorów) są już wykorzystywane w partii kodu nie mogę zmienić, i muszę dostarczyć inną możliwą realizację A
dla moich użytkowników.
Jestem świadomy, że mogę wprowadzić moją nową implementację po nazwie fasoli, ale chciałbym tego uniknąć.
Czy jest coś na wiosnę, które może mi w tym pomóc?
Ale w moim przypadku, DefaultImpl nie jest '@ Specific'. To SpecificImpl musi być '@ Specific'. DefaultImpl musi mieć wartość 'Primary' – baraber