java - Spring 中是否有等效于 CDI 的 @Default 限定符?

标签 java spring dependency-injection

在 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 限定符自动分配给注入(inject)点而不指定任何限定符。

但我正在使用 Spring,但无法执行该操作。

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException

问题是“默认”注入(inject)(没有限定符)已经用在很多我无法更改的代码中,我需要为我的用户提供另一种可能的 A 实现。

我知道我可以通过 bean 名称注入(inject)我的新实现,但我想避免它。

Spring 中有什么可以帮助我实现它吗?

最佳答案

有人向我指出@Primary 正是这样做的。我试过了,效果很好:

@Primary
class DefaultImpl implements A {}

在我的例子中,DefaultImpl 是在 xml 中:

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

关于java - Spring 中是否有等效于 CDI 的 @Default 限定符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642820/

相关文章:

java - 在 Swing 中的 JLabel 上显示按钮

java - 如何在云中自动扩展 Java 应用程序?或者,是否有适用于 Java 的 Heroku?

unit-testing - 是否可以在 xUnit 中使用依赖注入(inject)?

android - Dagger 2 静态注入(inject)

java - 在嵌入式数据库中为 Spring Batch 创建元数据表

java - ssh4 延迟初始化异常

spring - 如何在同一个 Spring Boot 应用程序中使用多个 'JWK Set Uri' 值?

java - Java服务使用什么框架+应用服务器+开发环境?

dependency-injection - 如何在 TYPO3 Extbase 扩展中包含或自动加载外部库? + 依赖注入(inject)?

java - 设置耗时并使用 toString