java – 在Spring中是否有相当于CDI的@Default限定符?

前端之家收集整理的这篇文章主要介绍了java – 在Spring中是否有相当于CDI的@Default限定符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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中有什么可以帮助我实现它吗?

解决方法

有人指着我@Primary正是这样做的.我尝试过它完美无缺:
@Primary
class DefaultImpl implements A {}

在我的情况下,DefaultImpl在xml中:

<bean id="defaultImpl" class="DefaultImpl" primary="true"/>

猜你在找的Java相关文章