gpt4 book ai didi

cdi - 对于 CDI 注入(inject),生产者存档和注入(inject)者存档中是否需要 META-INF/beans.xml?

转载 作者:行者123 更新时间:2023-12-02 02:15:27 25 4
gpt4 key购买 nike

也许这只是梳理 CDI 1.0 specification 的时间太多了,但我找不到关于需要 META-INF/beans.xml 的确切位置的详细描述。

(section on bean discovery 做了一些暗示某些事情的诱人陈述,但我不确定它是否是规定性的。)

我知道笼统地说任何 bean 存档都需要一个。

但请考虑在兼容的 CDI 1.0 环境中使用以下 jar 的情况:

  • 接口(interface) jar 仅包含接口(interface)
  • 实现 jar 包含实现这些接口(interface)的 CDI bean,并具有 @Inject 注入(inject)点,但没有生产者方法
  • producer jar 包含(为简单起见)带有单个方法的单个 Java 对象,该对象已用 @Produces 注释。

producer jarimplementation jar 都需要是 bean archives,这似乎是合乎逻辑的,因此每个都需要 META-INF/beans .xml 资源包含在其中。

但为了完整起见,事实是这样吗?由于 implementation jar 只使用了一个 @Inject 点并且没有 CDI 注释,它会被其他方式扫描吗?另一种看待它的方式:在此示例中,实现 jar 用作注入(inject)的目标,而不是 注入(inject)剂。所以我可以看到某种逻辑会说:看,只有生成 可以注入(inject) 的 bean 的 jar 才需要声明为 bean 存档。 (我并不是说那是真的;只是我可以看到有人提出这种论点。)

最后,接口(interface) jar 的整个问题。根据定义,它不包含 beans,但很久以前我就见过 GlassFish 的案例,其中甚至 interface jar 也必须有一个 META-INF/beans.xml 文件在里面。这对我来说似乎是错误的,但令我惊讶的是我无法在规范中真正找到一个部分来确认或否认这一点。

所以:beans.xml 无处不在?只装在生产注入(inject)剂的 jar 里吗?仅在注入(inject)目标 jar 中?或者……?

最佳答案

a.) 您需要在生产者和 impl jar 中都有 beans.xml 标记文件

b.) 在纯接口(interface) jar 上不需要 beans.xml 标记文件。如果 GlassFish 失败,则这是一个 gf 错误。不过,它不会造成任何伤害。

关于cdi - 对于 CDI 注入(inject),生产者存档和注入(inject)者存档中是否需要 META-INF/beans.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com