java - Servlet 3.0 的构造函数依赖注入(inject)?

标签 java servlets dependency-injection

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

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

问题:

  • 是否可以在不使用 createServlet 的情况下“手动”构建 servlet 实例? (new MyServlet())
  • 是否可以使用 Java EE 服务器的依赖注入(inject)机制来执行构造函数注入(inject)?怎么做?或者是否需要像 Guice 这样的独立 DI 框架?

最佳答案

最近的 Java EE 6 标准现在支持 servlet 的依赖注入(inject),相关部分称为 JSR-299 或 CDI。 JSR-299 引用实现,JBoss weld ,如果您不想使用像 glassfish v3 这样的完整 Java EE 6 应用程序服务器,也可以部署到像 Tomcat 或 Jetty 这样的 servlet 容器中,例如

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

关于java - Servlet 3.0 的构造函数依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992132/

相关文章:

java - spring如何使用多个数据库?

java - @EJB 注释导致 servlet 停止工作

Angular/TypeScript 将服务注入(inject)基类而不是子类

java - 在 Java 中记录为用户语句

java - Amazon SQS - FIFO 队列消息请求,接收不一致

java RestTemplate GET 请求,带有编码的 URL

java - 使用 Java 创建 SOAP 服务外观

java - 从 2 个不同的客户端调用同一个 Servlet

c# - 构造函数枚举参数的 StructureMap 配置

dependency-injection - 使用上下文信息记录日志