java 依赖注入模糊覆盖

java dependency inject ambiguous overwrite

我正在使用 openapi 生成器生成 java-resteasy 服务器存根代码模板,我的想法是使用生成器生成一些我永远不会修改的接口,我将用我自己的代码实现该接口。

但是,生成器已经生成了实现 class,我编写了自己的实现 class 来扩展生成的实现。所以现在有两个实现 classes,所以 CDI 抱怨模棱两可:

javax.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type openapidemo.gen.FruitsApiService and qualifiers [@Default]

有什么方法可以在 CDI 尝试发现 bean 时将我自己的实现 class 标记为第一优先级?从而覆盖openapi生成的。

编辑:

根据@Negi 的回答,@Alternative 可能是一种在 CDI 搜索 bean 时将 class 指示为低优先级的方法,但是,就我而言,我想隐藏生成的代码而不修改因为我会在我的回购协议中检查它,我希望代码生成是幂等的。那么有什么方法可以用我自己的实现 class 将 class 注释为“优先级”,而不是 @Alternative

这是不明确的,因为 CDI 按类型搜索 bean,并且您的实体和生产者方法 return 类型相同。

请在 bean 级别添加 @Alternative 注解。

您可以创建一个名为 .openapi-generator-ignore 的文件并注明您不希望生成的文件。

https://openapi-generator.tech/docs/faq-extending/#how-do-i-skip-files-during-code-generation