我有一个使用 CDI 的简单应用程序(我正在 Intellij IDE 中开发)。 初始化使用生产者
@Produces
public @Alg int getExperimentSize() {
return 1000;
}
我想要两个单独的主文件有两种配置(假设一个有 1000 个,另一个有 100 个)。这会导致“依赖关系不明确”错误。我尝试将生产者设为私有(private),并将主文件移动到不同的包,但它们仍然彼此可见,并且错误仍然存在。
是否可以在同一个 Intellij 项目上使用不同的注入(inject)来运行两个不同的主函数?
编辑:根据@Smutje 的评论,我给出了一个更详细的示例: 假设我们有一个接口(interface)
public interface SortingAlgorithm <T extends Comparable<T>>{
void sort(T[] array);
}
类 AlgorithmRunner 被注入(inject)这样的属性
public class AlgorithmRunner {
@Inject @Quad
SortingAlgorithm quadraticAlgorithm;
}
A 团队开发一个实现该接口(interface)的类
public class BubbleSort implements SortingAlgorithm{
}
并使用生产者注入(inject)它
@Produces
private @Quad
SortingAlgorithm makeQuadSortingAlg() {
return container.instance().select(BubbleSort.class).get();
}
B 团队不知道 A 团队,有自己的实现,并希望添加相应的生产者。我想在我的 intellij 项目中说明这种情况。
最佳答案
您是否有理由希望让两个单独的 Java 类作为生产者?
在这样的情况下,当我想支持可配置行为时,我通常会有一个生产者来生成配置并从例如加载其配置。 @PostConstruct
上的属性文件 - 所以我有一个生产者(没有模糊的依赖关系),但也没有硬编码值。
关于java - 在不同的包中为同一类使用两个 CDI 生成器 (Intellij),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765959/