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