Java 注射依赖豆
我有一节课 EntityFacadempl.java 其中ICCustomerBean是@Local接口,有两个实现类CustomerBean.java和CustomerBeanExt.java,后者扩展了CustomerBean.java ICustomer接口如下所示Java 注射依赖豆,java,dependency-injection,ejb,ejb-3.0,cdi,Java,Dependency Injection,Ejb,Ejb 3.0,Cdi,我有一节课 EntityFacadempl.java 其中ICCustomerBean是@Local接口,有两个实现类CustomerBean.java和CustomerBeanExt.java,后者扩展了CustomerBean.java ICustomer接口如下所示 @Local public interface ICustomerBean { public void printCustomer(Customer c); public void additionalFiel
@Local
public interface ICustomerBean {
public void printCustomer(Customer c);
public void additionalFieldsHandler(String additionalFields);
}
我的目标是,每当我仅在simplerespojo.java中为EntityFacadeImpl注入EntityFacadeInterface时,我希望将CustomerExtBean注入其中,而当任何其他类注入它时,我希望将CustomerBean注入其中
@Path("/pojo")
public class SimpleRESTPojo {
@EJB
private EntityFacade entityFacade;
}
我的应用程序的入口点仅为EntityFacade。有没有办法做到这一点?实际上,在阅读了您的问题之后,您似乎在尝试引入紧耦合。CDI不会让EntityFacade知道它被注入的位置。我看不出有什么办法 您可以创建使用此注入点的EntityFacade的扩展版本:
@Inject
@Extended //or whatever qualifier you come up with
private ICustomerBean customerBean;
然后在扩展EntityFacade上使用相同的限定符
@Path("/pojo")
public class SimpleRESTPojo {
@EJB
private EntityFacade entityFacade;
}
@Inject
@Extended //or whatever qualifier you come up with
private ICustomerBean customerBean;