Lon*_*zak 7 ioc-container cdi jakarta-ee
Java EE 服务器具有不同的容器,如 EJB 或 Web 容器:

但是,我发现有关如何集成 CDI 组件的不同信息。在文学中,有人谈到 CDI 容器(“ CDI 容器为您自动管理范围内的所有 bean ”),但其他人将其定义为 Java EE 容器提供的上下文服务。在 stackoverflow 上,甚至还有一个名为“IOC-Container”的标签。那么,如果它是一个容器,它是 EJB/Web 容器的容器部分/内部吗?
因此,如果我绘制 Java EE 服务器及其组件和容器的图片(如上图所示),CDI 是如何适应的?它有自己的容器“矩形”还是某些 EJB/Web 容器的一部分?你会如何在建筑设计中绘制它,你会如何解释/描述它?
CDI 有一个单独的容器。在您的图片中,它很可能是 EE 服务器端的另一个单独的矩形。谈到 EE 环境,CDI 由 EE 容器(通常是 RI - Weld)提供,因此容器将在(第一次)应用程序部署时为您启动它。
话虽如此,CDI 容器是每个 EE 服务器一个。即使您部署了几个都使用 CDI 的 WAR 应用程序,仍然会有一个 CDI 容器。请注意,在 SE 环境中(Weld SE 允许您在 SE 环境中使用 CDI),如果您愿意,您可以拥有多个这样的容器。
至于与 EJB 和 JSF 等其他 EE 内容的集成。例如,它们允许您使用@Stateless或@ViewScoped哪些是基于 CDI 的功能。因此,他们必须“以某种方式”与 CDI 集成。现在这个魔法是在 EE 容器内完成的,通常是通过提供者的(焊接)SPI。例如,容器负责处理 EJB bean,然后将它们(通过 SPI)移交给 Weld,然后 Weld 可以将它们作为 CDI bean 接管,允许您@Inject进入@Statelessbean。显然,以上是对实际发生的情况的简化。
| 归档时间: |
|
| 查看次数: |
1483 次 |
| 最近记录: |