How do I initialize a web application using a dagger?
What do I need to add to the method contextInitialized
to properly initialize the object graph?
Given this dagger module:
@Module
public class MapperModule {
@Provides
@Singleton
ObjectMapper provideObjectMapper() {
return new ObjectMapper();
}
}
This ServletContextListener subclass:
public class DaggerDi implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ObjectGraph objectGraph = ObjectGraph.create(new MapperModule());
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
And web.xml
<web-app>
<display-name>Archetype Created Web Application</display-name>
<listener>
<listener-class>
com.me.config.DaggerDi
</listener-class>
</listener>
</web-app>
+3
source to share
1 answer
You can check out this servlet dagger project , I haven't tried it yet, but looks simple enough, you'll have to:
- Configure the servlet (web.xml file):
<web-app>
<listener>
<listener-class>com.example.MyServletContextListener</listener-class>
</listener>
<filter>
<filter-name>Dagger Filter</filter-name>
<filter-class>com.leacox.dagger.servlet.DaggerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Dagger Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
-
Implement a listener and context module:
@Module (injects = {...}, includes = ServletModule.class) public class MyModule {}
@Module (injects = {...}, includes = ServletRequestModule.class) public class MyRequestModule {}
The public class MyServletContextListener extends DaggerServletContextListener {@Override protected Class [] getBaseModules () {return new Class [] {MyModule.class}; }
@Override protected Class<?>[] getRequestScopedModules() { return new Class<?>[]{MyRequestModule.class}; }
}
Hello!
0
source to share