什么是CDI中的上下文?

4
2个回答

8
一个CDI框架的上下文基本上是对象的大地图。你可以通过使用任何CDI配置方法(spring xml beans /注解,如@Component/@Service)向上下文中添加对象,或者让CDI框架从你的服务类创建对象。
一旦你拥有了上下文,就可以从中获取对象:(Spring:getBean(name))
现在,您可以配置上下文中的对象/beans之间的依赖关系,CDI将确保任何您从上下文中获取的对象都已设置其依赖关系。这就是依赖注入的部分。
非上下文化的对象简单地不会被添加到上下文中,CDI框架也不知道它们。通常只有服务类是CDI上下文的一部分。
* 不是真正的地图,但可以按名称、类型和其他方式访问对象。默认情况下,每次按相同名称请求时都会获得相同的对象(单例),尽管您可以配置CDI以每次按请求创建一个新对象(原型)。

1
谢谢。 :) 从上面的阅读中,我了解到由CDI创建的对象被称为上下文实例。例如服务bean、dao bean等。CDI无法创建或未创建的对象称为非上下文对象。例如Servlet实例、消息驱动bean等。我的理解正确吗? - Krishna Chaitanya

1
CDI 中的上下文是程序执行期间可以使用上下文对象的某个时间段。它定义了 CDI 容器何时创建、销毁以及如何链接这些对象的实例。 非上下文对象是那些不与任何 CDI 上下文相关联的对象。 MDB 是其中一个例子,它们由 EJB 容器管理,不适合用作普通对象。 通过 JPA 与数据库交互时,实体会随之而来,因此也无法绑定到上下文中。 另一个例子是任何您手动创建其实例的对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接