当前位置: 首页 > 面试题库 >

CDI和EJB如何比较?相互作用?

元望
2023-03-14
问题内容

我很难理解两者之间的相互作用以及两者之间的界线。它们重叠吗?它们之间是否有冗余?

我知道两者都有相关的批注,但是我还没有找到简短说明的完整列表。不知道这是否有助于弄清它们之间的差异或重叠之处。

真的只是糊涂了。我(认为我)相当了解EJB,我想很难确切地了解CDI给表带来了什么,以及它如何取代或增强EJB已经提供的功能。


问题答案:

CDI:
关于依赖注入。这意味着您可以在任何地方注入接口实现。该对象可以是任何东西,可以与EJB不相关。这是一个如何使用CDI注入随机生成器的示例。与EJB无关。当您要注入非EJB服务,不同的实现或算法时,将使用CDI(因此您根本不需要EJB)。
EJB: 您确实了解,并且@EJB注释可能使您感到困惑-
它使您可以将实现注入到您的服务或任何其他内容中。主要思想是,您在其中注入的类应由EJB容器管理。似乎CDI确实了解EJB是什么,因此在Java EE
6兼容服务器中,您可以在servlet中编写两个


@EJB EJBService ejbService;

@Inject EJBService ejbService;

那会让您感到困惑,但这可能是唯一的事情,那就是EJB和CDI之间的桥梁。

当我们谈论CDI时,您可以将其他对象注入CDI管理的类中(它们仅应由CDI感知框架创建)。

CDI还提供了什么…例如,您将Struts 2用作MVC框架(仅作为示例),并且即使在使用EJB 3.1的情况下也受到限制-
您不能@EJB在Struts操作中使用注释,它不是由容器管理的。但是,当您添加Struts2-CDI插件时,您可以在此处@Inject为同一内容编写注释(因此,无需进行其他JNDI查找)。这样,它可以增强EJB的功能,但是正如我前面提到的,您要使用CDI注入的内容-
它与EJB是否相关都没有关系,这就是它的功能。

PS。更新到示例的链接



 类似资料:
  • 问题内容: 有没有人在编写比较两个REST服务的测试方面有任何技巧?我们这样做是作为回归测试的一种形式。 我希望按照以下方式做一些事情: 向两个服务发送“ / 1”的GET并比较结果 向这两个服务发送POST,然后比较结果 向两个服务发送一个PUT,并比较结果 这个想法是: 每个操作都发送到两个服务 结果应该相同 REST服务是用Java / Jersey编写的,因此使用它是理想的,但是人们发现有

  • 问题内容: 我有两个边界框的两个坐标,其中一个是地面坐标,另一个是我工作的结果。我想根据地雷来评估我的准确性。所以我问是否有人有任何建议 边框详细信息以这种格式保存 问题答案: 编辑:我已更正其他用户指出的错误。 我假设您正在检测某些对象,并且正在围绕它绘制一个边界框。这属于对象检测的广泛研究/研究领域。评估精度的最佳方法是计算并集交集。这是从PASCAL VOC挑战中获得的,这里。请参阅此处的视

  • 我理解A,我们在那里有一个原语;没有引用。by-复制。 我希望B和C的行为与D相同——根据它们被给予的引用而改变。 为什么这个对象引用另一个对象只对用户定义的对象“起作用”,而不是整数、字符串等。?

  • 我有一个如下所示的Powershell数组: 我需要找到TSMserver和集群的所有VM都具有相同的值。 我需要一个命令来检索(例如)这两个VM,因为它们共享相同的第一个值。 所以实际上我需要将数组中的每个对象与其他对象进行比较,以找到前两个属性的公共值。 提前非常感谢!

  • 我指的是这个博客上列出的代码:https://strstr.io/Leetcode1054-Distant-Barcodes/ 我在这里复制这段代码 我试图理解的代码在这里 我从这段代码中得到的是是用

  • 我目前在Wildfly 8.2上面临EJB3.1和CDI1.2的一些问题。0.5决赛。我认为CDI和EJB并不是完全可互操作的,因为web上到处都有这样的建议。 我的设置如下所示: 进一步资料: A.1的会话bean使用@EJB注入同一模块的其他会话bean CDI为A.1激活 EARB有一个jboss部署结构。声明从B.1到a.1的依赖关系的xml,aso CDI已为B.1激活 为了避免显式查找