java - 使用 @Produces 注释时出现不明确的依赖关系

标签 java jakarta-ee dependency-injection cdi jboss-weld

我一直在研究CDI依赖注入(inject)的@Produces注解 here 。我刚刚创建了自己的相同示例。然而,我面临着模糊的依赖。

public interface Bank {

    public void withdrawal();
    public void deposit();
}

public class BankOfAmerica implements Bank {

    @Override
    public void withdrawal() {
        System.out.println("Withdrawal from Bank of America");
    }

    @Override
    public void deposit() {
        System.out.println("Deposit to Bank of America");
    }
}

public class BankFactory {

    @Produces
    public Bank createBank() {
        return new BankOfAmerica();
    }
}

这是注入(inject) bean 的类。

public class ProducesExample {

    @Inject
    private Bank bankOfAmerica;

    public void callBanksWithdrawal() {
        bankOfAmerica.withdrawal();
    }
}

感谢您的帮助。

编辑:我知道这是此 question 的重复项。然而,在我分享的教程中,它说它应该可以工作。此外,只有一种类型的 bean,因此不需要使用 @Default 或 @Alternatives,但仍然对它不起作用的原因感到困惑。

最佳答案

本教程对于每个步骤中应同时部署哪些类有点含糊(双关语),因此我不会太担心。

您链接的其他问题的答案确实符合您的情况。 BankOfAmerica 是一个 Bank 类型的 bean(在 CDI 1.0 或具有显式 bean 的 CDI 1.1+ 中),并且您的生产者方法是相同类型的另一个 bean,因此不明确分辨率。

关于java - 使用 @Produces 注释时出现不明确的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28186130/

相关文章:

java - 重置 Weld 的廉价方法?

scala - Play 2.7 中的 RequestScoped

java - 如何在Java EE中实现通用的队列监控组件?

java - 线程中的异常 "main"org.hibernate.exception.ConstraintViolationException : could not execute statement

java - Lucene 搜索结果按自定义顺序列表排序(每个用户唯一)

java - 如何检查对象 ArrayList 是否包含没有循环的对象的单个属性

java - Eclipse 不编译我的 servlet

jakarta-ee - 如何避免 WebappClassLoader.findResources 中的 NullPointerException?

rust - 尝试在 Rust 中进行控制反转时未实现 `Send`

php - 为什么在 Laravel 中对 Request 对象和 request() 助手使用依赖注入(inject)?