Servlet 3.0的构造方法依赖注入? [英] Constructor dependency injection with 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 $ c $的情况下手动构造servlet实例? c>? (
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屋!