在名为bean的JSF中注入Java对象
我有一个JSF2bean用作视图的控制器:在名为bean的JSF中注入Java对象,jsf,jakarta-ee,dependency-injection,java-ee-6,cdi,Jsf,Jakarta Ee,Dependency Injection,Java Ee 6,Cdi,我有一个JSF2bean用作视图的控制器: @Named @SessionScoped public class PosController implements Serializable { @EJB FatturaFacade fatturaFacade; // ... } 正如您所看到的,我已经可以在其中注入一个EJB(用作dao包装器),但是注入“简单”对象的方法是什么?如果我有如下不同的实现呢 interface Retriever; class WebServiceRe
@Named
@SessionScoped
public class PosController implements Serializable {
@EJB FatturaFacade fatturaFacade;
// ...
}
正如您所看到的,我已经可以在其中注入一个EJB(用作dao包装器),但是注入“简单”对象的方法是什么?如果我有如下不同的实现呢
interface Retriever;
class WebServiceRetriever implements Retriever;
class FileRetriever implements Retriever;
我看到了
@接口
注释,但我没有很好地理解它。假设您有一个完整的JavaEE6平台,最好的方法是使用CDI的@Inject
最简单的机制是使用具体类型:
public class Bean {
@Inject
private WebServiceRetriever webServiceRetriever;
@Inject
private FilesRetriever filesRetriever;
//etc.
对于同一接口的多个实现,可以创建注释。有关其用法的说明,请参见
@Files
限定符:
@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Files {}
FileRetriever
实现:
@Files
public class FileRetriever implements Retriever {}
消除注入目标中检索器实现的歧义:
public class Bean {
@Inject @WebServices
private Retriever webServiceRetriever;
@Inject @Files
private Retriever filesRetriever;
//etc.
我的博客上有一篇文章,你可能会觉得有用