依赖注入在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;
假设我有一个接口,我们称它为 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;