3

我犹豫是否要就同一主题提出另一个问题,但至少现在我正在阅读,我认为,正确的文档

所以,这个类:

class FacesContextProducer {
   @Produces @RequestScoped FacesContext getFacesContext() {
      return FacesContext.getCurrentInstance();
   }
}

焊接文档来看,这种方法实际上通过以下方式适用于 Glassfish: GlassFish 使用 WELD 作为 JSR-299 的参考实现:Java EE 平台 (CDI) 的 Java 上下文和依赖注入。

对于上面的类,它会在哪里使用?为什么需要一个单独的类来@Produces 一个 FacesContext?

4

2 回答 2

7

对于上面的类,它会在哪里使用?他为什么要注入 FacesContext?

我认为这要么是为了

  1. 一致性; 或者
  2. 测试。

广告 1. 如果尝试做纯 CDI,当您不使用其他依赖查找机制(作为getCurrentInstace()静态方法)时,它看起来不错。请注意,实际上不需要定义生产者和使用注入。它只是方便且与 CDI 的用法一致。

广告 2. 由 McDowell 博客链接解释,想象一下注入是用 CDI 完成的。

为什么需要一个单独的类来@Produces 一个 FacesContext?

这不需要是一个单独的类,您可以让单个类产生多个 bean。它只是有助于代码的清晰度将其分开。

于 2012-04-09T19:32:46.307 回答
6

您可能希望注入FacesContext以避免直接依赖静态getCurrentInstance()方法以简化模拟和单元测试。

我已经为 JSF 自己的依赖注入机制写了一些关于这里的内容。

于 2012-04-09T12:06:43.313 回答