Я изучаю Guice и не совсем понимаю, как использовать экземпляр Injector
. Лучше создать экземпляр Injector
один раз при загрузке приложения и сделать его общедоступным синглтоном?
И правда ли, что мы всегда должны использовать Injector#getInstance(SomeClass.class)
для получения классов, в которые мы поместили аннотации Guice @Inject
?
Injector.getInstance()
. - person millimoose   schedule 12.02.2013@Inject
, должны иметь автоматически доступные классы. (Предположим, что Guice управляет классами, которым требуется внедрение.) Идея состоит в том, что у вас есть контейнер, управляющий обеими вашими зависимостями, и классами, которые их используют, и извлекает только один основной класс из инжектора. вручную, чтобы запустить приложение. Вам также следует рассмотреть возможность перечитать руководство, это внедрение зависимостей 101. - person millimoose   schedule 12.02.2013@Inject
, должен быть получен с использованиемInjector#getInstance(MyClass.class)
. Так что, если у меня есть несколько классов с полями, аннотированными@Inject
? Мне нужно инициировать каждый класс, используяInjector#getInstance(ClassName.class)
. - person MyTitle   schedule 12.02.2013Injector.injectMembers(this)
и заполнить все поля, аннотированные@Inject
изInjector
, даже для неуправляемого объекта. - person millimoose   schedule 13.02.2013Injector.injectMembers(this)
. Как я понимаю, мне нужно вызывать этот метод в каждом классе, который имеет аннотации@Inject
? - person MyTitle   schedule 13.02.2013