在CDI实现项目中包含空beans.xml的目的是什么?

我在我的JSF-EJB-JPA Web应用程序中使用weld ,CDI的RI作为dependency injection组件。 我在项目中看到ejb.jar中的META-INF/beans.xml和WAR中的WEB-INF/beans.xml都有空beans.xml。 我不明白为什么我们需要在该文件中没有定义时保留空beans.xml

CDI需要在启动时扫描bean存档的所有类并触发一堆事件,因为几乎任何类都自动成为托管bean( 在这里阅读更多),即使它没有任何注释。

这会产生相当大的开销,特别是对于不具有任何bean的jar文件,因此通过包含beans.xml来明确指示应扫描哪些bean归档是有益的。

它在某些有限的情况下使用

http://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

一些CDIfunction如装饰器将在此文件中声明