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

对于CDI注入,我需要META-INF/bean吗。生产者存档和注射者存档中的xml?

钦枫
2023-03-14

也许只是对CDI 1.0规范进行了太多的梳理,但是我找不到对需要META-INF/beans.xml的确切描述。

关于bean发现的部分做了一些诱人的陈述,暗示了某些事情,但我不确定它是否是规定性的。)

我知道粗略地说,任何bean档案都需要一个。

但是在兼容的CDI 1环境中考虑以下情况:

  • 仅包含接口的接口jar
  • 一个包含CDIBean的实现jar,该CDIBean实现了这些接口,并具有@Inject注入点,但没有生产者方法
  • 一个producer jar(为了简单起见)包含一个Java对象和一个方法,该方法已被@注释为producers

似乎合乎逻辑的是,生产者jar和实现jar都需要bean存档,因此每个人都需要META-INF/bean。其中包含的xml资源。

但为了完整起见,事实是否如此?由于实现jar只使用一个@Inject点,而没有CDI注释,它会被其他方式扫描吗?从另一个角度来看:在这个例子中,实现jar仅被用作注入的目标,而不是注入物的来源。所以我可以看到一些html" target="_blank">逻辑,会说:看,只有生产可以注射的豆子的罐子需要申报为豆子档案。(我不是说那是真的;只是我可以看到有人提出了那个论点。)

最后,还有接口jar的整个问题。根据定义,它不包含bean,但我很久以前就见过GlassFish的例子,即使是接口jar也必须有META-INF/bean。xml文件在其中。这对我来说似乎是错误的,但令我惊讶的是,我无法在规范中找到一个部分来证实或否认这一点。

所以:bean。xml无处不在?仅在可注射生产罐中?仅在注射靶罐中?或

共有1个答案

广瑞
2023-03-14

a、 你需要豆子。producer和impl jar中的xml标记文件

B.)在纯接口罐上不需要beans.xml标记文件。如果玻璃鱼失败,那么这是一个gf错误。不过,这不会造成任何伤害。

 类似资料:
  • 生产者方法对于以编程方式创建实例并在上下文中发布它们非常有用。问题是由创建并由生产者方法返回的实例的所有属性都不是由CDI注入的。在焊接留档中,我读到这是一种有意的行为,但在许多情况下,注入这些豆子会非常有用。 是否有一个变通方法来允许注入到这样的bean中?

  • 本文解释了可以将RequestScoped Bean注入ApplicationScoped Bean中,并且客户机代理将在请求期间指向正确的实例:在CDI中,较短范围的Bean实例注入较大范围的Bean实例中-它是如何工作的? 当使用一个单独的生产者类进行额外处理并生成RequestScoped bean时,这是如何工作的?在部署到应用服务器时,由于不明确的依赖关系,我得到一个Deployment

  • 有人能解释一下CDI范围注释在生产者中的作用吗?他们似乎什么也做不了。 这些,自然地,在启动时给出了这个(省略的)错误。 WELD-001409:类型的依赖关系不明确。可能的依赖关系: 带有限定符[@Any@Default]的生产者方法[Thing]声明为[[BackedAnnotatedMethod]@生成公共pkg。测验东西制作人。thingMaker(), 因此,尽管“RequestScop

  • 我有一个JAR文件,其中包含一个请求范围Bean。(一个注释为的类)。 我有另一个Web服务项目(作为WAR文件构建)。上述JAR文件位于WAR文件的文件夹中。 我试图的类到Web服务项目中的一个类中。 我正在得到一个 这两个项目都有JAR文件,WAR文件包含一个空的。我已经研究这个问题好几天了。请帮忙。 谢谢

  • 我试图创建一个使用具有生产者方法的类的简单示例,目的是生产者方法注入依赖项,而不是Weld试图创建bean。这就是为什么我已经了我还希望坚持限定符 所以我有以下几点 发动机JAVA 默认引擎。JAVA 汽车JAVA 一个pp.java 引擎制造商。JAVA 我有beans.xml 但是当我收到以下信息时,似乎没有被注入。

  • 我有一个叫做Container的类: ServiceB依赖于ServiceA: 在我的应用程序中可以有几个容器。现在,有没有什么诀窍可以将这个已经被注入到与ServiceB相同的容器实例中的ServiceA实例注入到ServiceB中呢?