使用Servlet 3.0构造函数依赖注入?

dea*_*mon 8 java servlets dependency-injection

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

@Inject
public MyServlet(SomeDependency sd) {  // Constructor
  ...
}
Run Code Online (Sandbox Code Playgroud)

问题:

  • 是否有可能"手动"构建一个servlet实例而没有createServlet?(new MyServlet())
  • 是否可以使用Java EE服务器的依赖注入机制来执行构造函数注入?怎么做?或者像Guice一样需要单独的DI框架?

Ste*_*n L 5

最近的Java EE 6标准现在支持servlet的依赖注入,相关部分称为JSR-299或CDI.该JSR-299参考实现,JBoss的焊接,可以部署到servlet容器如Tomcat或Jetty,以及如果你不想使用像GlassFish的第三版如一个完整的Java EE 6的应用服务器

顺便说一句,使用嵌入式Jetty服务器,您可以使用其自定义API添加预配置的servlet实例.