Я просто возился с Google Guice для внедрения зависимостей и начал интегрировать его в мое существующее приложение. Все идет нормально. У меня есть много классов, которые нуждаются, помимо их зависимостей, в строках, источниках данных и так далее. Я знаю, что есть NamedBindings, но я действительно не хочу создавать аннотацию для каждой простой строки, которую я должен передать конструктору для каждого класса. Затем есть вещь, называемая AssistedInject, которая создает реализации Factory для меня. Ничего себе, но я все еще должен определить интерфейс фабрики. Это нормально для классов, которые имеют зависимости, но как насчет этого примера класса:
public class FooBarClass {
public FooBarClass(String name, String anotherOne) {
// Some stuff
}
}
В некоторых случаях я сомневаюсь, как правильно использовать Guice или, в более общем смысле, DI. «Часто слышу: XYZ Framework - это новый новый ». Но это подразумевает, что мне нужно создать каждый экземпляр с DI-фреймворком.
Требуется только один экземпляр
Что если мне нужен только один экземпляр этого класса? Этот класс не имеет абсолютно никаких зависимостей, кроме двух строк. Подумайте о крюке отключения, который будет создан только один раз и передан в JVM как мой крюк отключения. Должен ли я создать этот экземпляр с Guice? Это выглядит очень глупо для меня, потому что вводить нечего, но мне нужно написать заводской интерфейс для передачи обоих параметров Guide и создать интерфейс для моего FooBarClass для использования DI.
Требуется несколько экземпляров
То же самое относится и к случаю, когда мне нужно несколько экземпляров этого класса. Никаких зависимостей, но я должен создать кучу шаблонного кода, чтобы ничего не получить от него. Мне кажется, это неправильно.
Итак, как мне использовать DI и / или Guice?
Большое спасибо!