11

如何将对象注入到 servlet?

我的意思是,我不能使用构造函数 DI,因为 servlet 是由 servlets 容器实例化的。
而且我也没有看到为 servlet 实现基于 setter 的 DI 的好方法。

我应该使用 servlet 侦听器吗?有没有最佳实践?

PS 我既没有 Spring 也没有 Guice 也没有任何其他 DI 框架,我对手动依赖注入很感兴趣。

4

3 回答 3

21

这在 Servlet 3.0 下是可能的。您注册一个ServletContextListener ,它在应用程序启动之前以编程方式使用 ServletContext 的addServlet(String, Servlet)方法注册 Servlet 实例。由于您自己实例化了 Servlet 实例,因此您可以为它们提供适当的构造函数并注入依赖项。

不久前我创建了一个示例来说明基本技术。

于 2012-05-11T10:08:53.807 回答
0

您可以使用 JNDI(Java 命名和目录接口)并@Resource注入它。

于 2012-05-11T10:12:17.730 回答
0

您可以使用由某些 IOC 容器(Spring、Guice)创建/管理的服务

您可以创建一个 ContextAware 实现并在需要时从 Servlet 中提取 bean

于 2012-05-11T10:06:13.240 回答