在单独的软件包(Intellij)中使用同一类的两个CDI生产者

问题描述 投票:0回答:1

我有一个使用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 dependency-injection cdi
1个回答
0
投票

您是否有理由要让两个单独的Java类成为生产者?

在这种情况下,当我想支持可配置行为时,通常会有一个生产者来生产配置并从(例如)加载配置。 @PostConstruct上的属性文件-因此,我只有一个生产者(没有模棱两可的依存关系),但是也没有硬编码的值。

© www.soinside.com 2019 - 2024. All rights reserved.