加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:25:33 所属栏目:Java 来源:网络整理
导读:在CDI中,我可以这样做: // Qualifier annotation@Qualifier@inteface Specific{}interface A {}class DefaultImpl implements A {}@Specificclass SpecificImpl implements A {} 然后在课堂上: @InjectA default;@Inject@SpecificA specific; 它的工作原理
在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"/>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读