我是 guice DI 框架的新手在 Spring 中,我们可以使用 el 访问会话范围变量
sessionScope['scopedTarget.sessionService'].loggedUser
但是我怎么能在guice中做到这一点?
如果您选择使用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 是一个好主意,因为您正在编写的类可能比任何给定会话的寿命更长。