当前位置: 首页 > 知识库问答 >
问题:

CDI:@替代vs@限定符

鲍高扬
2023-03-14

作为CDI的新手,我想知道替代方案和限定符之间的实际区别。

在焊缝参考中,它指出:

4.3. 限定符注释

如果我们有多个实现特定bean类型的bean,注入点可以使用限定符注释精确指定应该注入哪个bean。

但在解释替代方案时,据说:

4.7.备选方案

替代方案是bean,其实现特定于特定的客户端模块或部署场景。

如果我理解正确的话,@Qualifier定义了目标bean的哪些实现被注入到注入点。

另一方面,@Alternative描述了部署过程中的一个愿望,这取决于客户机是否将标准bean的替代项(我的意思是“@default ”)注入到注入点。

这是对的吗?

共有1个答案

岳英锐
2023-03-14

是的,没错。您可以将限定符想象为在开发时使用源代码中的注释设置的基本编织。

替代方案允许您在执行时使用beans.xml文件-一个简单的部署工件来覆盖它。

一个典型的场景是使用不同的bean.xml用于不同的环境,从而为您不想在本地/集成环境中执行的组件启用模拟替代方案。

 类似资料:
  • 我使用的是Glassfish 3.1.2.2,JavaEE6。 我有一个库,其中一个类使用CDI获取一个帮助器类。我希望在一个使用该库的特定项目中,重写该CDI依赖项,并强制该库使用我自己的帮助器类,而不是特定于该项目的帮助器类。我可以随意修改库,但默认情况下它应该使用默认的助手类,这样库的其他用户的行为就不会改变。 这应该是CDI模式的完美应用,我为helper类API做了一个java接口;库中

  • 我想使用Mojarra和Weld在Apache TomEE上运行一个WebApp。 是否因为TomEE已经使用了另一个CDI-Framework(OpenWebB)而出现了问题?有可能让TomEE和Weld一起运行吗?

  • 问题内容: 该问题的答案表明,当方法采用通配符通用类型时,可以访问或修改集合,但不能同时访问或修改集合。(凯西和伯特) 这是什么意思?“ 当方法采用通配符通用类型时,可以访问或修改集合,但不能同时访问两者 ”? 据我所知,方法do1具有d2只能访问但不能修改。d2的方法使c2可以被访问和修改,并且没有编译错误。 通用准则 问题答案: 该问题的答案表明,当方法采用通配符通用类型时,可以访问或修改集合

  • 问题内容: 我对这个问题感到生气,不知道如何解决。 我们试图从Windows Central存储库上的钩子触发Jenkins构建。这实际上是在旧的Jenkins服务器(LTS 1.580.1)上工作的。 我们之前的操作方式是使用存储在文件中的SSH私钥调用Jenkins CLI。 这是奇怪的事情: C:\ Users \ Username \ jenkins> java -jar jenkins-

  • 问题内容: 由于Spring能够像EJB一样使用事务。对我来说,Spring能够代替使用EJB的需求。谁能告诉我使用EJB的其他优点是什么? 问题答案: Spring从一开始就被开发为EJB的替代品,因此答案当然是您可以使用Spring代替EJB。 如果说使用EJB有“优势”,我想这将取决于您团队的技能。如果您没有Spring专业知识,并且拥有丰富的EJB经验,那么坚持使用EJB 3.0是一个不错

  • 问题 你在代码中使用 while 循环来迭代处理数据,因为它需要调用某个函数或者和一般迭代模式不同的测试条件。 能不能用迭代器来重写这个循环呢? 解决方案 一个常见的IO操作程序可能会想下面这样: CHUNKSIZE = 8192 def reader(s): while True: data = s.recv(CHUNKSIZE) if data ==