从Servlet 3.0开始,可以用javax.servlet.ServletContext#addServlet
以编程方式注册Servlet实例。该类还有一个createServlet
方法,可以分析一些注释并执行依赖注入。如果我不需要注释处理,我想知道是否需要这种方法。我想要一个带有通常构造函数的servlet来通过依赖注入设置所需的依赖项。
@Inject
public MyServlet(SomeDependency sd) { // Constructor
...
}
问题:
createServlet
的情况下“手动”构建servlet实例? (new MyServlet()
)答案 0 :(得分:5)
最近的Java EE 6标准现在支持servlet的依赖注入,相关部分称为JSR-299或CDI。如果您不想使用像glassfish v3这样的完整Java EE 6应用程序服务器,那么JSR-299参考实现JBoss weld也可以部署到像Tomcat或Jetty这样的servlet容器中。
顺便说一句,使用嵌入式Jetty服务器,您可以使用其自定义API添加预配置的servlet实例。
答案 1 :(得分:3)
Guice在不需要Java EE服务器的情况下开箱即用。