【发布时间】:2014-06-28 03:49:40
【问题描述】:
我有课
EntiyFacadeImpl.java
@Stateless
public class EntityFacadeImpl implements EntityFacade {
@EJB
ICustomerBean customerBean;
public void printCustomer(Customer c) {
customerBean.printCustomer(c);
customerBean.additionalFieldsHandler(c.getAdditionalFields().toString());
}
}
ICustomerBean 是@Local 接口,有两个实现类CustomerBean.java 和CustomerBeanExt.java,后者扩展了CustomerBean .java
@Stateless(name = "CustomerBean")
public class CustomerBean implements ICustomerBean {
public void printCustomer(Customer customer) {
System.out.println(customer);
}
public void additionalFieldsHandler(String additionalFields) {
// an empty implemetation here
}
}
@Stateless(name = "CustomerExtBean")
public class CustomerExtBean extends CustomerBean implements ICustomerBean {
@Override
public void additionalFieldsHandler(String additionalFields) {
// some custom implemetation
System.out.println("Additional Fields: "+additionalFields);
}
}
ICustomer界面如下所示
@Local
public interface ICustomerBean {
public void printCustomer(Customer c);
public void additionalFieldsHandler(String additionalFields);
}
我的目标是,每当我只在 SimpleRESTPojo.java 中注入我的 EntityFacade(EntityFacadeImpl 的接口)时,我希望 CustomerExtBean 被注入在其中,当任何其他类注入它时,我希望 CustomerBean 被注入
@Path("/pojo")
public class SimpleRESTPojo {
@EJB
private EntityFacade entityFacade;
}
我的应用程序的入口点仅是 EntityFacade。有没有办法做到这一点?
【问题讨论】:
标签: java dependency-injection ejb ejb-3.0 cdi