Roboguice @ Inject сервис путаница - PullRequest
3 голосов
/ 30 июня 2011
private Service service;

@Inject
public ClassName(final Service service) {
    this.service = service;
}

@Inject
private Service service;

Может ли кто-нибудь сказать мне разницу между этими двумя стилями инъекций?

1 Ответ

2 голосов
/ 30 июня 2011

Первый говорит, что инжектор вызовет ваш конструктор и предоставит соответствующий объект Service. Что вы делаете в конструкторе, зависит от вас.

Второй говорит, что он установит вашу переменную-член надлежащим образом (то есть у вас может быть конструктор по умолчанию, и он все равно волшебным образом установит переменную для вас).

Как правило, я предпочитаю первое, поскольку оно сохраняет ваши зависимости явными, но я уверен, что есть веские причины для использования метода 2.

Я не использовал RoboGuice, но я предполагаю, что он имеет те же общие принципы, что и обычный Guice - и некоторая соответствующая документация @Inject для этого есть в их вики: http://code.google.com/p/google-guice/wiki/Injections

...