我是DI Framework的新手 在Spring中,我们可以使用el
访问会话范围变量sessionScope['scopedTarget.sessionService'].loggedUser
但我怎么能用guice做到这一点?
答案 0 :(得分:1)
如果您选择使用Guice's Servlet extension,您应该能够绑定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&lt; Foo&gt;没有任何额外的工作。在这里,注入提供者是个好主意,因为你写的课程可能比任何给定的课程都要长。