У меня есть основное приложение Java с довольно сложными аргументами командной строки.Эти аргументы в настоящее время обрабатываются классом CommandLineArgumentProcessor
.Вот как выглядит мой текущий код:
public static void main(String[] args) {
Injector injector = Guice.createInjector(new ConfigModule(), new WorkModule(), new ReportModule);
injector.getInstance(I_CommandLineArgumentProcessor.class).processArguments(args);
//Its not until here that I know if I should stub or not with this implementation
...
}
Сейчас я реализую способ заглушить некоторые классы для тестирования системы.Для этого мне нужно поменять некоторые привязки, которые использует Guice.Затем в командной строке я укажу определенные флаги для включения / выключения заглушки различной функциональности.Однако моя проблема в том, что аргументы не обрабатываются до тех пор, пока не будет создан инжектор.
Нужно ли иметь отдельную логику для обработки моих флагов заглушки до создания инжектора, а затем условно создать соответствующий инжектор?Я сомневаюсь в этом подходе, потому что он разделяет логику обработки аргументов командной строки на две области кода.Или есть другой (подходящий) способ заставить Guice подставлять различные объекты / поддеревья в графе объектов после создания инжектора?Или у меня есть один инжектор для процессора командной строки, а затем создать еще один для остальных модулей?