LogProvider.java
01.
package co.uk.hivedevelopment.greet.server.guice;
02.
import org.apache.commons.logging.Log;
03.
import org.apache.commons.logging.impl.Log4JLogger;
04.
import com.google.inject.Provider;
05.
import com.google.inject.Singleton;
06.
@Singleton
07.
public class LogProvider implements Provider<Log>{
08.
public Log get() {
09.
return new Log4JLogger("GreetingLogger");
10.
}
11.
}
MyGuiceServletConfig.java
01.
package co.uk.hivedevelopment.greet.server.guice;
02.
import com.google.inject.Guice;
03.
import com.google.inject.Injector;
04.
import com.google.inject.servlet.GuiceServletContextListener;
05.
public class MyGuiceServletConfig extends GuiceServletContextListener {
06.
@Override
07.
protected Injector getInjector() {
08.
return Guice.createInjector(new ServerModule(), new DispatchServletModule());
09.
}
10.
}
ServerModule.java
01.
package co.uk.hivedevelopment.greet.server.guice;
02.
import net.customware.gwt.dispatch.server.guice.ActionHandlerModule;
03.
import org.apache.commons.logging.Log;
04.
import co.uk.hivedevelopment.greet.server.handler.SendGreetingHandler;
05.
import com.google.inject.Singleton;
06.
/**
07.
* Module which binds the handlers and configurations
08.
*
09.
*/
10.
public class ServerModule extends ActionHandlerModule {
11.
@Override
12.
protected void configureHandlers() {
13.
bindHandler(SendGreetingHandler.class);
14.
15.
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
16.
}
17.
}
Finally we need to reconfigure the web.xml with the following:
web.xml
01.
<?xml version="1.0" encoding="UTF-8"?>
02.
<!DOCTYPE web-app
03.
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
05.
<web-app>
06.
<!-- Remote logging agent for gwt-log -->
07.
<servlet>
08.
<servlet-name>remoteLoggerServiceImpl</servlet-name>
09.
<servlet-class>com.allen_sauer.gwt.log.server.RemoteLoggerServiceImpl</servlet-class>
10.
</servlet>
11.
<servlet-mapping>
12.
<servlet-name>remoteLoggerServiceImpl</servlet-name>
13.
<url-pattern>/greetmvp/gwt-log</url-pattern>
14.
</servlet-mapping>
15.
<filter>
16.
<filter-name>guiceFilter</filter-name>
17.
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
18.
</filter>
19.
<filter-mapping>
20.
<filter-name>guiceFilter</filter-name>
21.
<url-pattern>/*</url-pattern>
22.
</filter-mapping>
23.
<listener>
24.
<listener-class>co.uk.hivedevelopment.greet.server.guice.MyGuiceServletConfig</listener-class>
25.
</listener>
26.
<!-- Default page to serve -->
27.
<welcome-file-list>
28.
<welcome-file>GreetMvp.html</welcome-file>
29.
</welcome-file-list>
30.
</web-app>
You may now launch the application. Surprise surprise, it looks no different but you're now following best practises. Good luck with your own GWT MVP development.

本文介绍了一个使用 GWT MVP 架构的应用如何通过 Guice 进行依赖注入来配置日志系统。具体展示了如何定义 LogProvider 以提供统一的日志实例,并在 ServerModule 中绑定该提供者。
173

被折叠的 条评论
为什么被折叠?



