Java 在web应用程序中获取Guice注入器

Java 在web应用程序中获取Guice注入器,java,guice,code-injection,layer,Java,Guice,Code Injection,Layer,我正在寻找如何在web应用程序中使用Guice获得注入器。我已经找到了一个使用ServletContext的解决方案,但我对这个解决方案并不满意,因为它破坏了应用程序的层体系结构。我不同意在应用程序的深层使用ServletContext。你知道另一条路吗 一个显而易见的解决方案是创建我自己的单例来托管注入器,但似乎Guice应该提供一些开箱即用的方法来实现这一点。我只是找不到一个…假设您使用的是Guice Servlet,并且假设您希望注入器所在的类本身被注入,只需注入注入器即可。您的应用程序生

我正在寻找如何在web应用程序中使用Guice获得注入器。我已经找到了一个使用ServletContext的解决方案,但我对这个解决方案并不满意,因为它破坏了应用程序的层体系结构。我不同意在应用程序的深层使用ServletContext。你知道另一条路吗


一个显而易见的解决方案是创建我自己的单例来托管注入器,但似乎Guice应该提供一些开箱即用的方法来实现这一点。我只是找不到一个…

假设您使用的是Guice Servlet,并且假设您希望注入器所在的类本身被注入,只需注入注入器即可。

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

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