【发布时间】:2021-11-15 04:10:05
【问题描述】:
我正在使用weld 4.0,在我的一种生产者方法中,我有这个签名:
@Produces
@ConfigurationType
public <T extends IConfiguration> T getConfigurationInstance(InjectionPoint injectionPoint){
<perform some logic, create an instance of class T and return>
}
目标是有几种配置。基于 ConfigurationType (Database/Server/Datasource blah, blah),返回一个特定类型的 Configuration 实例,它实现了 IConfiguration 接口,以便我可以将返回的实例以更易读的格式处理,如 JDK14 记录或其等价物。换句话说,我只想说 serverConfigurationInstance.port() 来读取端口,其中 serverConfigurationInstance 是 Produced 并由 Injector 逻辑返回的。
现在,启动时焊接容器会告诉我:
执行 Java 类时发生异常。 WELD-001562:生产者方法返回类型可能不是类型变量或组件类型为类型变量的数组类型: [错误] [EnhancedAnnotatedMethodImpl] @ConfigurationType @Produces public config.ConfigurationInjector.getConfigurationInstance(InjectionPoint) [错误] 在 config.ConfigurationInjector.getConfigurationInstance(ConfigurationInjector.java:0)
Jakarta 焊接文档 (4.0.1) 或搜索特定错误代码或消息并没有进一步引导我。我做错了什么?
【问题讨论】:
-
下面的答案涵盖了所提出的问题。我想知道你是否正在尝试做动态制作人的东西。如果是这样,您可能会发现我关于该主题的博客文章很有帮助:lairdnelson.wordpress.com/2017/02/11/…
标签: dependency-injection cdi weld producer