我没有经验,EJB
目前CDI
我正在尝试理解它们的一些基本原理以及如何使用它。我特别想掌握它的用途和用途,Qualifiers
并且我已经阅读了指南。但是,我无法完全理解 a 如何Qualifier
作为接口的扩展。以指南中的示例和声明为起点:“限定符就像接口的扩展。它不会创建对任何特定实现的直接依赖。@Asynchronous PaymentProcessor 可能有多种替代实现!” ,我假设一个人可以做到:
@Asynchronous
public class AsynchronousPaymentProcessor implements PaymentProcessor {
public void process(Payment payment) { ... }
}
和
@Asynchronous
public class OtherAsynchronousPaymentProcessor implements PaymentProcessor {
public void process(Payment payment) { ... }
}
然后他们尝试注入:
@Inject @Asynchronous PaymentProcessor asyncPaymentProcessor;
在这种情况下,如何确定注入哪个 bean,因为两者都用相同的注释Qualifier
?还是只关注限定符的多个实现Alternatives
?
更新完成:
我也阅读了相关的问题。我想要的是一个没有很长描述的答案:既然我可以注入实现接口的类型类,那么注入接口类型有什么好处,除了实现松散耦合?如果我用 2 个实现尝试上面的代码@Asynchronous
并且我收到一个异常,那么我推断它(多个实现)只能通过替代实现。我对吗?