gpt4 book ai didi

java - 排除基于 PropertyFileConfig 的 CDI Bean(DeltaSpike,WebSphere 8.5.5)

转载 作者:行者123 更新时间:2023-11-29 05:21:37 24 4
gpt4 key购买 nike

我正在尝试使用 DeltaSpike 1.0 @Exclude-Annotation 排除 Bean 实现。排除应该基于这样的属性值:

@Exclude(onExpression = "providerimplementation!=mock")

我创建了一个 PropertyFileConfig 返回我的 .properties 文件名让 DeltaSpike 获取配置值并在两个不同的地方使用这个 @Exclude实现 bean,每个 bean 都像上面一样被排除在外。

配置作为 .jar 文件包含在 EAR 中,并且两种实现都位于 EAR 内不同的 .jar 文件中。

我正在尝试将整个归档文件部署到 WebSphere 8.5.5 服务器上,并且在启动时我得到一个 javax.enterprise.inject.AmbiguousResolutionException 作为注入(inject)点。

在我看来,PropertyFileConfig 在表达式解析之前没有被拾取,尽管我找到了对这种模式的引用(http://deltaspike.apache.org/core.html#excludehttps://groups.google.com/forum/#!topic/java-config/xsleMKST3rU),所以我想知道出了什么问题使用我的设置。

最佳答案

第一个答案:

不幸的是,通过 PropertyFileConfig 工具定义的属性不能与 @Exclude 一起使用。

那是因为扩展名ConfigurationExtension仅在容器初始化结束时注册 PropertyFileConfig(这可能是强制性的,因为 PropertyFileConfig 类用作 CDI Beans)

相反,您必须使用默认的 ConfigSource 实现: http://deltaspike.apache.org/documentation/configuration.html#_configsources_provided_by_default或创建您自己的自定义 ConfigSource

这里有一个特别快速的解决方法,就是在默认属性文件中定义您的属性:META-INF/apache-deltaspike.properties而不是自定义属性文件

编辑:

事实上,我之前的回答是不完整的(至少对于最新版本的 DeltaSpike(今天是 1.3.0)):PropertyFileConfig 的 javadoc 现在记录了此限制,并显示了另一种使用 serviceloader 工具配置自定义属性文件的方法: http://deltaspike.apache.org/javadoc/1.3.0/org/apache/deltaspike/core/api/config/PropertyFileConfig.html

关于java - 排除基于 PropertyFileConfig 的 CDI Bean(DeltaSpike,WebSphere 8.5.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24446080/

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