【问题标题】:what is meant by context in CDI?CDI中的上下文是什么意思?
【发布时间】:2014-01-30 09:16:12
【问题描述】:

我是 CDI 的新手。在阅读时,我总是遇到上下文对象,非上下文对象。它们是什么意思?

例如下面的链接

http://docs.jboss.org/weld/reference/latest/en-US/html/beanscdi.html#d0e881

消息驱动和实体 bean 本质上是非上下文对象 并且不能注入到其他对象中

【问题讨论】:

    标签: java java-ee-6 cdi


    【解决方案1】:

    CDI 框架的上下文基本上是对象的大图*。您可以使用任何 CDI 配置方法(spring xml beans/@Component/@Service 等注释)将对象添加到上下文或使 CDI 框架从您的服务类创建对象。

    一旦你有了上下文,你就可以从中获取对象:(Spring: getBean(name))

    现在您可以在上下文中配置对象/bean 之间的依赖关系,CDI 将确保您从上下文中获取的任何对象都设置了其依赖关系。这是依赖注入部分。

    非上下文对象根本不会添加到上下文中,CDI 框架也不知道它们。通常只有服务类是 CDI 上下文的一部分。

    * 虽然不是真正的地图,但可以通过名称、类型和其他方式访问对象。默认情况下,每次请求同名(单例)时,您都会获得相同的对象,尽管您可以配置 CDI 以在每次请求时创建一个新对象(原型)。

    【讨论】:

    • 谢谢。 :) 从上面的阅读中我了解到由 cdi 创建的对象称为上下文实例。示例服务 bean、dao bean 等。 cdi 无法创建或 cdi 未创建的对象称为非上下文对象。示例 servlet 实例、消息驱动 bean 等。我说的对吗?
    【解决方案2】:

    CDI 中的上下文是在程序执行期间可以使用上下文对象的某个跨度。 它定义了 CDI 容器何时创建、销毁以及如何将这些对象的实例链接在一起。

    非上下文对象是那些不绑定到任何 CDI 上下文的对象。

    MDB 就是一个例子,它们由 EJB 容器管理,不打算用作普通对象。 当您通过 JPA 与数据库交互时,实体来来去去,因此它们也不能与上下文相关联。 另一个示例是您手动创建其实例的任何对象。

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      相关资源
      最近更新 更多