在 CDI 中,我可以这样做:
// Qualifier annotation
@Qualifier
@inteface Specific{}
interface A {}
class DefaultImpl implements A {}
@Specific
class SpecificImpl implements A {}
然后在课堂上:
@Inject
A default;
@Inject
@Specific
A specific;
它之所以起作用,是因为@Default
自动分配给注入点的限定符未指定任何限定符。
但是我正在使用 Spring 并且无法执行该操作。
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException
问题是“默认”注入(没有限定符)已经在很多我无法更改的代码中使用,我需要A
为我的用户提供另一种可能的实现。
我知道我可以通过 bean 名称注入我的新实现,但我想避免它。
Spring中有什么可以帮助我实现它吗?