依赖注入在EJB的以下多态性中是如何工作的

How does dependency injection work in EJB's following polymorphism

假设我有一个接口,我们称它为 A 并且有两个 类 实现了这个接口。现在,当我将进行依赖注入时,我如何提及要调用哪个具体实现。

@Local
interface SortAlgo{
   void sort();
}

class bubbleSort implements SortAlgo{
   void sort(){
     // logic
   }
}

class insertionSort implements SortAlgo{
   void sort(){
     // logic
   }
}

现在依赖注入

class SortArray{
  @EJB
  SortAlgo sortAlgo;
  System.out.println(sortAlgo.sort());
}

此时我将如何提及选择哪个实现。

例如,如果您有通过 Verizon 或 T-Mobile 网关发送 SMS 的 SMS EJB,则:

@Local
public interface SmsProvider { 
    public void sendSms(Sms sms);
}

T-Mobile:

@Stateless(name = "SmsProviderTMobile")
public class SmsProviderTMobile implements SmsProvider {
...
}

威瑞森:

@Stateless(name = "SmsProviderVerizon")
public class SmsProviderVerizon implements SmsProvider {
...
}

然后你可以像这样注入具体实现:

@EJB(beanName = "SmsProviderTMobile")
SmsProvider smsProviderTMobile;