【问题标题】:Is Servlet a CDI/Managed Bean in Java EEServlet 是 Java EE 中的 CDI/托管 Bean
【发布时间】:2018-06-22 00:11:35
【问题描述】:

在容器环境(如wildfly、jboss)中,servlet 是否被视为托管bean?即我可以将 Servlet 注入到任何其他 CDI bean 中吗?

我使用 CdiRunner CDI-Unit 来编写我的测试。因此,我想将 Servlet 注入到我的 Test 类中并测试它的(公共)方法。

【问题讨论】:

  • 我相信 servlet 不被视为托管 bean,它在 servlet 容器中运行,就像托管 bean 在 bean 容器中运行一样。但是,您应该能够将servlets context 注入您的测试类吗? This 可能会提供一些帮助。
  • @JGlass cdi-unit 源代码是个好地方。但是,请注意其他链接:它指向 olddescontinued JBoss Seam 框架文档。我推荐CDI specification 作为参考。
  • @cassio-mazzochi-molin,感谢您的积极反馈和警告,如果可以,我会编辑评论,但看起来我做不到。

标签: servlets jakarta-ee cdi managed-bean


【解决方案1】:

如果由 servlet 容器而不是由 CDI 管理,则 servlet 的生命周期。但是,CDI 注入预计可以在 servlet 中工作。

servlet 容器还将提供一些可以使用 CDI 注入的built-in beans

servlet 容器必须提供以下内置 bean,所有 有限定符@Default:

  • bean 类型为 javax.servlet.http.HttpServletRequest 的 bean,允许 注入对HttpServletRequest的引用

  • bean 类型为 javax.servlet.http.HttpSession 的 bean,允许 注入对HttpSession的引用

  • 一个bean类型为javax.servlet.ServletContext的bean,允许注入 对ServletContext的引用

如果你需要在某个地方注入一个 servlet,你可能做错了什么。

【讨论】:

  • 感谢您的及时回复。是否有任何文件提及这一事实。我想永远收藏它。
  • 该死,也打我吧!不过我的链接可能会有所帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2013-11-26
  • 2014-04-30
  • 2015-04-20
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多