Java 注射依赖豆

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

我有一节课

EntityFacadempl.java

其中ICCustomerBean是@Local接口,有两个实现类CustomerBean.java和CustomerBeanExt.java,后者扩展了CustomerBean.java

ICustomer接口如下所示

@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;