Пользовательская область Google Guice - PullRequest
4 голосов
/ 24 февраля 2012

Просто быстрый вопрос, чтобы понять, правильно ли я понимаю область действия.

Я понимаю, что область действия - это контроль над тем, как / когда создается экземпляр.Теперь у меня есть класс в приложении, и я хочу два его экземпляра;каждый будет введен в какой-то другой экземпляр.

Возможно ли в Guice создать две области действия для каждого экземпляра?и тогда я могу внедрить каждый из экземпляров области действия в любой другой экземпляр, как мне нравится?

1 Ответ

5 голосов
/ 24 февраля 2012

Области:

  1. Области позволяют вам управлять жизненным циклом объекта.

  2. Вы можете только bindScope() аннотацию области действия один раз,Концепция области действия - уровень инжектора: это конфигурация проводки.

  3. Вы можете связать несколько вещей (ключей) в единую область.

  4. Вы можете определить столько областей, сколько пожелаете, но каждая привязка может быть только в одной области действия.

Вы не предоставили полную информацию о своей проблеме, но, по моему опыту,в большинстве случаев, когда пользовательская область видимости изначально является правильным ответом, на самом деле это редко бывает!

Возможно, вам нужно аннотировать два экземпляра одного типа?Что-то вроде:

bind(SomeService.class).in(First.class).to(FirstServiceImpl.class);
bind(SomeService.class).in(Second.class).to(SecondServiceImpl.class);

Затем вы можете ввести желаемое:

@Inject
SomeConstructor(@First SomeService service) {
}

или:

@Inject
SomeConstructor(@Second SomeService service) {
}

Если это не поможет, вы можетенужно дать более подробную информацию о вашей проблеме.

...