Я только что унаследовал Java-приложение, и после проверки кода я вижу, что IMHO является бастардизацией среды Spring. Видите ли, команда Java, похоже, не любит интерфейсы, поэтому мы в итоге получаем такие вещи:
@Autowired
private SomeConcreteFinalClass _myField;
Нет конфигурации Spring, не определен bean-компонент, нет шансов, что я смогу протестировать содержащий объект изолированно. По сути, это фабрика на основе аннотаций с накладными расходами Spring.
Я вне линии или это похоже на использование слоновой пушки для убийства мух? Мне просто нужно проверить реальность, поскольку все остальные в команде считают, что это вполне приемлемо.
Редактировать
Во многих случаях эти аннотированные фабрики появляются в сложных классах обработки, которые извлекли бы огромную пользу из изолированного тестирования. Команда также хмурится после тестирования.
Здесь нет тайны, я надеюсь. Если у меня есть конкретный класс, который не за интерфейсом, и нет соответствующего Spring боб для «установки» объект, то это бесспорно прославленный завод, который может быть реализован с 10 строк кода.
Spring не используется никаким другим способом в системе; это оно.
Мои цели прямо сейчас:
- Институт политики тестирования
- Обучать
команда по достоинствам компонента
изоляция
- Переместить эти поля с автопроводкой
за интерфейсами
Полагаю, последний вопрос: есть ли польза от сохранения этих полей в Autowired, если мы не тестируем или каким-либо другим образом используем фреймворк? Я бы точно так же new
обьект, если зависимость неизменна.