【问题标题】:JBoss cdi-api usesJBoss cdi-api 使用
【发布时间】:2011-06-11 08:33:57
【问题描述】:

我正在寻找有关 CDI API 的帮助。如果我的问题看起来很幼稚,我很抱歉,我尝试在网上查找有关 CDI API 的一些高级描述,但无法正确解决。

javadoc 说:

上下文和依赖注入 (CDI) 定义了一组有助于改进应用程序代码结构的补充服务。

我的问题是在 EJB 3.X 中,我们已经有了 Annotations 来帮助 DI 和注入资源,如 PersistenceContext 和其他类型的资源。那么 CDI API 究竟在哪些方面会有所帮助?在使用 J2SE 的普通 web-app/独立 Java 程序中?

【问题讨论】:

    标签: jboss dependency-injection cdi


    【解决方案1】:

    EJB 3.0 带有对资源和 EJB 级别的依赖注入 - 这已经很酷了 :-)

    CDI 做了什么(并且更酷)——它降低了对所谓“托管 bean”(JSR 316)的依赖注入的障碍——它(除其他外)定义了一个类需要受益的最小前提条件集从依赖注入。稍微简化一下,可以说 CDI 项目中的所有类都是托管 bean,因此符合 DI 条件。

    总结一下 CDI 在 DI 方面为 EJB 3.0 带来了什么:

    • 您不再需要 EJB,CDI 基本上可以与 POJO 一起使用。这确实是轻量级的,因为它允许您在需要 EJB 时使用 EJB,而不是在需要 DI 时使用。
    • DI 变为有状态 - 不同的依赖项存在于不同的范围内 - EJB 3.0 完全无法提供。
    • 您可以从类型安全且松耦合的拦截器机制中受益
    • 您可以从类型安全且松散耦合的机制中受益

    看看第一章here,你就会明白了:-)

    【讨论】:

      【解决方案2】:
      Java EE5 中的

      DI 只允许注入 JDBC DataSource、JPA EntityManager、UserTransaction、Web 服务、EJB 等资源。所有这些资源都由容器管理。

      对于 EE6,尤其是对于 CDI,您不仅限于注入资源 - 您可以注入所有内容(每个 bean)。查看 CDI 规范附带的注释:@Inject、@Named、@Scope、@Singleton 等。 CDI 为您提供事件、装饰器等功能。

      看看这个教程,应该可以帮助你理解CDI:http://java.dzone.com/articles/cdi-di-p2

      【讨论】:

        猜你喜欢
        • 2017-01-20
        • 2013-05-25
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多