0

我是 guice DI 框架的新手在 Spring 中,我们可以使用 el 访问会话范围变量

sessionScope['scopedTarget.sessionService'].loggedUser

但是我怎么能在guice中做到这一点?

4

1 回答 1

1

如果您选择使用Guice 的 Servlet 扩展,您应该能够自动绑定 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> 而无需任何额外工作。在这里,注入一个 Provider 是一个好主意,因为您正在编写的类可能比任何给定会话的寿命更长。

于 2012-07-16T20:06:31.283 回答