在Web应用程序中获取Guice Injector

时间:2011-04-04 13:27:00

标签: java guice code-injection layer

我正在寻找如何在Web应用程序中使用Guice获取Injector。我已经找到了使用ServletContext的解决方案,但是我对这个解决方案并不满意,因为它打破了应用程序的层架构。我不能在应用程序的更深层使用ServletContext。你知道另一种方式吗?

一个明显的解决方案是创建我自己的单例来托管Injector,但似乎Guice应该提供一些开箱即用的方法来做到这一点。我还找不到一个......

2 个答案:

答案 0 :(得分:6)

假设您正在使用Guice Servlet并假设您想要注入Injector的类,只需注入Injector。

答案 1 :(得分:1)

您的应用程序生命周期完全由servlet容器控制,因此使用上下文侦听器来启动应用程序的初始化过程是这一事实的合理结果。因此,我不会说这个事实本身并没有破坏分层体系结构,就像模型层中的Web请求启动活动既不破坏分层体系结构。

但是为了不破坏分层体系结构,servlet上下文监听器不应该涉及其他层的细节,它应该只启动初始化。因此,所有与Guice相关的代码(例如Guice注入器工厂)应位于其自己的层中。上下文侦听器的角色应限于启动初始化的调用(例如:MyGuiceFactory.init()或MyApp.init())。