bra*_*ebg 1 java gwt gwt-gin guice code-injection
嗨,大家好问我的问题.一个GWT项目,因为我读过Gin我只能在客户端使用,而不是Guice可以在服务器端使用.这是我的问题.
我们先发布一些示例代码.
服务器端.
public class WebchargeServiceImpl extends RemoteServiceServlet implements WebchargeService
{
@Inject
private Injector injector;
@Inject
private ExecuteOperations executeOperations;
.....
executeOperations.do(); ....
Run Code Online (Sandbox Code Playgroud)
这是注入的类ExecuteOperations
@Singleton
public class ExecuteOperations
{
.........
}
Run Code Online (Sandbox Code Playgroud)
我也有servlet模块类
public class SampleWebGuiceServletConfig extends GuiceServletContextListener
{
@Override
protected Injector getInjector()
{
return Guice.createInjector(Stage.DEVELOPMENT, new SampleWebModule());
}
} // class
Run Code Online (Sandbox Code Playgroud)
.....
public class SampleWebModule extends ServletModule
{
@Override
protected void configureServlets()
{
bind(WebchargeServiceImpl.class); //is it correct to bind a class like that?
} // class
Run Code Online (Sandbox Code Playgroud)
web.xml中
<servlet>
<servlet-name>.......WebchargeService</servlet-name>
<servlet-class>.....WebchargeServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>.........WebchargeService</servlet-name>
<url-pattern>/Webcharge/WebchargeService</url-pattern>
</servlet-mapping>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>......SampleWebGuiceServletConfig</listener-class>
</listener>
</web-app>
Run Code Online (Sandbox Code Playgroud)
我错过了一些东西,因为我每次都得到null,这段代码在servlet/jsp env中工作正常但是这里...建议的地方.
谢谢.
你必须将你的WebchargeServiceImplservlet 映射到你的SampleWebModule,而不是你的web.xml; 否则它将由您的servlet容器而不是Guice构建,因此它不会被"注入".