繁体   English   中英

为 CDI 指定 beans.xml 的自定义路径

[英]Specifying a custom path of beans.xml for CDI

当我使用 Spring 并且想要编写单元测试时,我可以通过多种方式指定自定义上下文配置,例如,通过提供context.xml的不同路径。

但是,如果我想使用自定义依赖项配置在同一个 maven 模块中进行测试,我不知道如何为 CDI 执行此操作。

文档对这一点非常严格

对于 EJB 模块或 JAR 文件,beans.xml 部署描述符(如果存在)必须位于 META-INF 目录中。

如果源代码中已经存在/META-INF/beans.xml ,我就不能在测试资源中放置一个不同的(它会被忽略)。

有没有办法配置Weld/CDI ,可能是通过使用一些系统变量来更改beans.xml的路径?

对于 EJB 模块或 JAR 文件,beans.xml 部署描述符(如果存在)必须位于 META-INF 目录中。

确实如此,但是这涉及到一个已经创建/打包的 JAR,然后您将其用作应用程序的依赖项。 但是您的应用程序也可以拥有自己的beans.xml beans.xml只是定义一个 bean 档案和该档案中的某些结构(拦截器、装饰器等)一种方法。 这意味着,例如,通过该 JAR 库中的beans.xml启用的拦截器将不会在您的应用程序中启用,除非您也在该应用程序的beans.xml中指定它。 因此,您在文档和您询问的测试之间看到的链接可能不正确/不相关。 不过,不确定我是否让你在那里。

有没有办法配置Weld,可能是通过使用一些系统变量,来改变beans.xml的路径?

不,没有。 但是在 EE 中,您主要使用 Arquillian 进行测试,这允许您(除其他外)定义测试部署。 您可以在其中包含您想要的任何自定义beans.xml 这也是 Weld/CDI TCK 测试大部分时间使用的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM