Roboguice @Inject сервис путаница
private Service service;
@Inject
public ClassName(final Service service) {
this.service = service;
}
@Inject
private Service service;
Может кто-нибудь сказать мне, пожалуйста, разницу между этими двумя стилями инъекций?
1 ответ
Первый говорит, что инжектор вызовет ваш конструктор и предоставит соответствующий объект Service. Что вы делаете в конструкторе, зависит от вас.
Второй говорит, что он установит вашу переменную-член соответствующим образом (имеется в виду, что у вас может быть конструктор по умолчанию, и он все равно волшебным образом установит переменную для вас).
Вообще, я предпочитаю первое, поскольку оно сохраняет ваши зависимости явными, но я уверен, что есть веские причины для использования метода 2.
Я не использовал RoboGuice, но я предполагаю, что он имеет те же общие принципы, что и обычный Guice - и некоторая соответствующая документация @Inject для этого есть на их вики: http://code.google.com/p/google-guice/wiki/Injections