【问题标题】:spring vs ejb3 - what is different in beans injection?spring vs ejb3 - bean注入有什么不同?
【发布时间】:2015-09-14 13:56:18
【问题描述】:

在春天我可以注入自己的 bean 并且在 ejb3 中我只能注入 ejb3 bean 是否正确?如果是这样,ejb3 怎么能替代 Spring?

【问题讨论】:

    标签: java spring ejb-3.0


    【解决方案1】:

    除了您可以使用 CDI 来注入不同类型的 bean 之外,您所说的“ejb3”bean 是什么意思,以及这些 bean 和 spring 的情况如何不是您的? Spring 注入任何类型的 bean,您可以通过在 XML 中声明它(旧方法)或通过指定注释(@Component、@Service 等)来实现。 EJB3 也是如此(您可以使用@Stateless 而不是@Service,只是为了打个比方)。 因此,在 JEE 环境中,一个可以替换为另一个(从这个角度来看,Spring 具有一些优势,因为它为快速开发奠定了基础,在 JEE 规范之上提供了额外的帮助程序、库、框架 - 请参阅 Spring Data JPA for一)。 所以,我认为这是你如何设计应用程序以使用其中一个或另一个的问题。

    【讨论】:

    • 我的意思是没有 CDI 。仅使用 ejb3(没有 spring 或 CDI)我不能注入 POJO 类或任何不实现或继承 ejb3 类的类,对吧?
    • 在 EJB3 中你不再实现或继承任何东西,你使用注解(就像你为 Spring 做的那样也做注入)。只是一组不同的注释。通过使用@Stateless 注释将 POJO 转换为 EJB 无状态会话 Bean,这就是您所要做的。
    • rigth soory ,但是我注入的 bean ejb 注释必须由 Stateless 自己进行注释。我不能注入没有注释的类,不是吗?
    • 不,你不能。但是你可以在没有 XML 配置的情况下在 spring 中进行吗(就像现在大部分配置都已完成)?我认为这一切都取决于您如何设计应用程序。当然,如果你有一个遗留应用程序,它有一些 POJO 并且你想注入它们但你不能修改代码,是的 spring 允许你通过 XML 配置来做到这一点。
    • 说“没有 CDI 的 EJB”是没有意义的,@yryrp,因为如果你在任何 Java EE 服务器上处理 EJB,你也有 CDI——它是规格。使用 CDI,您可以注入 POJO,无需 XML 配置。 Here is an example.
    【解决方案2】:

    在Java EE 环境中,您不仅可以使用EJB,还可以使用CDI。 见How do CDI and EJB compare? interact?

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2013-06-22
      • 2011-03-30
      • 2013-02-23
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多