根据我放置beans.xml的位置,在我的项目中,CDI要么在lib jars中找到@Named注释类,要么在主项目中找到@Alternative注释类。我无法弄清楚将它们放在哪里工作。
构建时,我有一个core.jar,它有一些@Default注释类和一些@Named注释类。
core.jar位于我项目的web-inf / lib中。
在该项目中,根据环境构建,我使用一些@Alternative注释类,这些类在web项目的beans.xml中指定(在WEB-INF中)
所以,我有2个beans.xml
在构建并放置在项目lib AND中的core.jar的META-INF中的1 部署的战争项目的WEB-INF中的1(指定备选方案)
在这些位置使用beans.xml文件时,beanhandler找不到beans.xml中指定的替代方法(战争的web-inf中的替代方法)
当我从jar依赖项中删除META-INF中的beans.xml并重新部署时,替代方法工作正常(奇怪)但是后来找不到@Named带注释的类...
有什么想法吗?
答案 0 :(得分:0)
你可以尝试一下:
From CDI 1.1 onwards the alternative can be enabled for the whole
application using @Priority annotation.
如alternatives中所述,您不需要依赖beans.xml作为备选方案的激活点。