Servlet 3.0的构造方法依赖注入? [英] Constructor dependency injection with Servlet 3.0?

查看:69
本文介绍了Servlet 3.0的构造方法依赖注入?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从Servlet 3.0开始,可以通过 javax.servlet.ServletContext#addServlet 以编程方式注册Servlet实例。此类还有一个 createServlet 方法,该方法分析一些注释并执行依赖项注入。我想知道是否不需要注释处理。我希望有一个具有通常构造函数的servlet,以便通过依赖注入来设置所需的依赖。

Since Servlet 3.0 it is possible to register Servlet instances programmatically with javax.servlet.ServletContext#addServlet. This class has also a createServlet method which analyses some annotations and performs dependency injection. I wonder if I need this method if I don't need the annotation processing. I'd like to have a servlet with a usual constructor to set required dependencies via dependency injection.

@Inject
public MyServlet(SomeDependency sd) {  // Constructor
  ...
}

问题:


  • 是否有可能在没有 createServlet ? ( new MyServlet()

  • 是否可以使用Java EE服务器的依赖项注入机制执行构造函数注入?怎么做?还是需要像Guice这样的单独的DI框架?

  • Is it possible to construct a servlet instance "by hand" without createServlet? (new MyServlet())
  • Is it possible to use the dependency injection mechanism of a Java EE server to perform constructor injection? How to do it? Or is a separate DI framework like Guice required?

推荐答案

现在最新的Java EE 6标准支持servlet的依赖注入,相关部分称为JSR-299或CDI。 JSR-299参考实现 JBoss焊接可以如果您不想使用像glassfish v3这样的完整Java EE 6应用服务器,也可以将其部署到Tomcat或Jetty之类的servlet容器中,例如

The recent Java EE 6 standard now supports dependency injection for servlets, the relevant part is called JSR-299 or CDI. The JSR-299 reference implementation, JBoss weld, can be deployed into servlet containers like Tomcat or Jetty as well if you don't want to use a full Java EE 6 application server like glassfish v3 e.g.

嵌入式Jetty服务器,您可以使用其自定义API添加预配置的servlet实例。

By the way, with an embedded Jetty server you can use its custom API to add preconfigured servlet instances.

这篇关于Servlet 3.0的构造方法依赖注入?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆