也许只需要花费太多时间梳理CDI 1.0 specification,但我无法找到确切需要META-INF/beans.xml
的详细说明。
(section on bean discovery做了一些诱人的陈述,暗示某些事情,但我不确定它是否具有规定性。)
我理解,松散地说任何bean存档都需要一个。
但请考虑在兼容的CDI 1.0环境中使用以下jar的情况:
@Inject
注入点,但没有生成器方法@Produces
注释。 生产者jar 和实现jar 都需要是bean归档似乎合乎逻辑,因此每个都需要META-INF/beans.xml
个资源它们。
但为了完整,这实际上是这样的吗?由于实现jar 仅使用@Inject
点而没有CDI注释,是否会通过其他方式进行扫描?查看它的另一种方法:在此示例中,实现jar 仅使用 作为目标进行注入,而不是源注射剂。所以我可以看到某种逻辑可以说:看,只有产生可以注入的bean的罐子需要被声明为bean档案。 (我不是说那是真的;只是我可以看到这个论点正在制定。)
最后,还有 interface jar 的整个问题。根据定义,它不包含bean,但我很久以前就已经看过使用GlassFish的情况,即使接口jar 也必须有一个META-INF/beans.xml
文件。这对我来说似乎不对,但我惊讶地发现,我无法在规范中找到确认或否认这一部分的部分。
那么:beans.xml
到处都是?只在注射用罐子里?仅在注射目标罐中?还是...?
答案 0 :(得分:2)
a。)您需要producer和impl jar中的beans.xml标记文件
b。)您不需要纯接口jar上的beans.xml标记文件。如果GlassFish失败,那么这是一个gf错误。但它没有任何伤害。