1

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

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

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

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

我正在尝试将整个存档部署到 WebSphere 8.5.5 服务器上,并且在启动时我得到了一个javax.enterprise.inject.AmbiguousResolutionException注入点。

在我看来PropertyFileConfig,虽然我发现了对这种模式的引用(http://deltaspike.apache.org/core.html#excludehttps://groups.google.com /forum/#!topic/java-config/xsleMKST3rU),所以我想知道我的设置有什么问题。

4

1 回答 1

3

第一个答案:

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

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

相反,您必须使用默认的 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

于 2015-03-16T13:05:45.400 回答