Guice: сфера связанных вопросов - PullRequest
2 голосов
/ 18 июля 2011

Я хотел бы использовать инфраструктуру внедрения зависимостей .

Во время моей оценки я пришел к выводу, что Google Guice кажетсячтобы лучше всего соответствовать моим требованиям.

Однако у меня возникли некоторые вопросы:

  1. Представьте себе веб-приложение, в котором пользователь может иметь независимых окон в пределахhttp сессия .Область действия Session является слишком общей, в то время как область действия Request является слишком узкой для меня.
    Есть ли область, которая может мне помочь?(что-то, что я бы назвал "window" или "controller instance" область)

  2. Есть ли подводные камни написание пользовательская область ?

  3. Наше веб-приложение и несколько автономных консольных приложений используют одни и те же классы.Я сталкиваюсь с проблемой, что область действия класса зависит от типа приложения, которое известно только во время выполнения .
    Например, в автономном приложении область действия будет " No-Scope"или" Per-Thread Scope", в то время как в веб-приложении оно будет связано с Session /" window ".
    Как решить эту проблемупроблема?

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Чтобы ответить 3. используйте разные модули для своих версий и установите там области действия.

bind(Grill.class).to(Applebees.class).in(Scopes.SINGLETON);
2 голосов
/ 18 июля 2011
  1. Вам нужно будет создать настраиваемую область
  2. Не то чтобы я знал. Мы использовали настраиваемую область видимости, и она работает очень хорошо.
  3. Иметь различные реализации настраиваемой области, используемой в веб-приложении, и другую для автономного приложения.
1 голос
/ 12 августа 2011

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

...