我对同一主题提出另一个问题犹豫不决,但至少现在我正在阅读,我认为,正确docs。
所以,这堂课:
class FacesContextProducer {
@Produces @RequestScoped FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
}
事实上,weld docs这种方法适用于Glassfish:GlassFish is using WELD as the reference implementation for JSR-299: Java Contexts and Dependency Injection for the Java EE platform (CDI).
对于上述课程,它会在哪里使用?你为什么需要一个单独的类@Produces a FacesContext?
答案 0 :(得分:7)
对于上述课程,它会在哪里使用?他为什么要尝试注入FacesContext?
我认为这是为了
ad 1.如果有人试图做纯CDI,那么当你没有使用其他依赖查找机制(如getCurrentInstace()
静态方法)时,它看起来很不错。请注意,定义生产者并使用注入确实不是 need 。它与CDI的使用方便且一致。
ad 2.由博客McDowell链接解释,想象一下注入是用CDI完成的。
为什么你需要一个单独的类@Produces a FacesContext?
这不需要是一个单独的类,您可以让单个类生成多个bean。它只是帮助清晰的代码将它分开。
答案 1 :(得分:6)
您可能需要注入FacesContext
以避免直接依赖静态getCurrentInstance()
方法来简化模拟和单元测试。
我已经为JSF自己的依赖注入机制here写了一些内容。