如何让 DI 与 Guice 和 Webapps 一起工作?

发布于 2024-11-18 11:53:50 字数 527 浏览 3 评论 0原文

如何让 DI 在 Web 应用程序中工作?到目前为止,我已经完成了以下操作:

1)使用@Inject注释setter方法

2)扩展AbstractModule,以便它将接口类绑定到属性的实现类setter 在步骤 1 中被注释

3) 扩展 GuiceContextServletListener 并覆盖 getInjector 以便它返回 Guice.createInjector(new ExtendedAbstractModule())

4) 在 web.xml 中注册扩展的 GuiceContextServletListener 作为监听器

我已经验证了扩展的 GuiceContextServletListener.getInjector() 方法在 webapp 启动时被调用。 setter 被注释的属性不会被注入并保持 null

How do you get DI to work in a webapp? So far I've done the following:

1) Annotate setter method with @Inject

2) Extend AbstractModule so that it binds the interface class to the implementation class for the attribute whose setter was annotated in step 1

3) Extend GuiceContextServletListener and overrode getInjector so that it returns Guice.createInjector(new ExtendedAbstractModule())

4) Registered the extended GuiceContextServletListener in web.xml as a listener

I've verified that the extended GuiceContextServletListener.getInjector() method is called when the webapp is started. The attribute whose setter was annotated is not being injected and remains null.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情定在深秋 2024-11-25 11:53:50

我继续创建了一个 ServletModule,它为使用 @Inject setter 实例化对象的 servlet 提供服务。实例化对象后,我从 ServletContext 获取 Injector 并调用 injectMembers 方法,将实例化的对象传递给它。

I went ahead and created a ServletModule that serves the servlet that instantiates the object with the @Inject setter. After instantiating the object I get the Injector from the ServletContext and call the injectMembers method passing it the instantiated object.

后知后觉 2024-11-25 11:53:50

您在设置器上使用什么注释?

我通常使用 @Named 注释来获取可以指向属性文件或单独设置的属性值。

http://code.google.com/p/google-guice/wiki/BindingAnnotations

@Inject

void SomethingSetter(@Named('Tag')String s) {

}

这里有一个关于如何使用 Guice 和 Sitebricks 设置完整的 Java Web 服务的教程:
http://www.techtraits.ca/设置 Java Web 服务器的五分钟指南/

What annotation are are you using on the setter?

I normally use @Named annotation to get attribute values which can be pointed to a property file or setup individually.

http://code.google.com/p/google-guice/wiki/BindingAnnotations

@Inject

void somethingSetter(@Named('Tag')String s) {

}

There is a tutorial of how to setup a complete Java web service using Guice and Sitebricks here:
http://www.techtraits.ca/five-minute-guide-to-setting-up-a-java-webserver/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文