У меня есть простое приложение, которое использует 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);
}
Класс 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, имеет его собственная реализация и хотел бы добавить соответствующего производителя. Я хотел бы проиллюстрировать эту ситуацию в своем интеллигентном проекте.