3

同じトピックについてさらに別の質問をすることをためらっていますが、少なくとも今は正しいドキュメントを読んでいると思います。

したがって、このクラス:

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

実際、Weldドキュメントから、この方法は次の方法で Glassfish に適用されます

上記のクラスの場合、どこで使用されますか? FacesContext を @Produces する別のクラスが必要なのはなぜですか?

4

2 に答える 2

7

上記のクラスの場合、どこで使用されますか? なぜ彼は FacesContext を注入しようとしているのですか?

どちらかのために行われていると思います

  1. 一貫性; また
  2. テスト。

getCurrentInstace()広告 1. 純粋な CDI を実行しようとすると、他の依存関係ルックアップ メカニズムを (静的メソッドとして) 使用していない場合に見栄えがします。プロデューサーを定義してインジェクションを使用する必要はないことに注意してください。これは単に便利であり、CDI の使用法と一致しています。

ad 2. は McDowell がリンクしているブログで説明されていますが、インジェクションが CDI で行われることを想像してみてください。

FacesContext を @Produces する別のクラスが必要なのはなぜですか?

これは別個のクラスである必要はありません。単一のクラスで複数の Bean を生成できます。コードを分離すると、コードが明確になります。

于 2012-04-09T19:32:46.307 に答える
6

モックと単体テストを簡単にするためFacesContextに、静的メソッドに直接依存することを避けるために を注入することをお勧めします。getCurrentInstance()

JSF 独自の依存性注入メカニズムについては、ここに少し書いています。

于 2012-04-09T12:06:43.313 に答える