0

Guice DI フレームワークは初めてです。Spring では、el を使用してセッション スコープ変数にアクセスできます。

sessionScope['scopedTarget.sessionService'].loggedUser

しかし、どうすればこれをGuiceで行うことができますか?

4

1 に答える 1

1

Guice のサーブレット拡張を使用することを選択した場合、HttpSession または Provider<HttpSession> を自動的にバインドできるはずです。

クラスでは、次のようなものを配置します。

private final MyDependency dependency;
private final Provider<HttpSession> sessionProvider;

@Inject
public MyClass(MyDependency dependency, Provider<HttpSession> sessionProvider) {
  this.dependency = dependency;
  this.sessionProvider = sessionProvider;
}

void callMyService() {
  HttpSession session = sessionProvider.get();
  String myValue = (String) session.get("value");
  // ...
}

プロバイダーは、インジェクターから新しいインスタンスを取得できる組み込みインターフェースです。クラス Foo がバインドされている場合は、追加作業なしでいつでも Provider<Foo> を注入できます。ここでは、作成しているクラスが特定のセッションよりも長く存続する可能性があるため、プロバイダーを注入することをお勧めします。

于 2012-07-16T20:06:31.283 に答える