Java Guice:如何创建HttpSessionProvider
我在下面有一个模块,它被定义为Servlet的内部类Java Guice:如何创建HttpSessionProvider,java,guice,provider,Java,Guice,Provider,我在下面有一个模块,它被定义为Servlet的内部类 private static abstract class TestModule extends AbstractModule implements Provider<HttpSession> { @Override protected void configure( ) { bind(HttpSession.class).toProvider( TestModule.class ); }
private static abstract class TestModule extends AbstractModule
implements Provider<HttpSession> {
@Override
protected void configure( ) {
bind(HttpSession.class).toProvider( TestModule.class );
}
@Override public abstract HttpSession get( );
}
我得到一个错误:
1) 没有绑定javax.servlet.http.HttpSession的实现
我做错了什么?问题是您的配置如下:
bind(HttpSession.class).toProvider( TestModule.class );
但HttpSession的实际提供者是在创建注入器时创建的匿名内部类
要解决这个问题,只需使用Guice的ServletModule:有解决方法吗?基本上,在doGet()或doPost()中创建注入器时,我需要创建提供者get()的实现。感谢您的评论。但是现在它会抱怨HttpServletRequest没有被绑定。@Mayumi,正如我在文章末尾所说的,如果您使用提供这些功能的ServletModule,则不会。实际上,我应该回到我说的,ServletModule还提供了一个
HttpSession
提供程序。
bind(HttpSession.class).toProvider( TestModule.class );