WidgetShared
- JAR-файлом "commons", который содержит общие классы, используемые как клиентом, так и серверомЯ сделаю явный вызов, который может выглядеть следующим образом: public static void main(String[] args) {
initGuiceInjectors();
}
private static initGuiceInjectors() {
Guice.createInjector(mySwingAppModule);
}
mySwingAppModule
определит все привязки для зависимостей приложения Swing.Я сделаю нечто очень похожее на сервере EAR.
Когда дело доходит до библиотеки WidgetShared
, я задыхаюсь, потому что у библиотеки нет единой точки входа: это просто набор пакетов, классы, интерфейсы и перечисления, которые клиент и сервер будут использовать повсеместно.
Итак, мой первый вопрос: где мне вызвать Guice.createInjector()
для WidgetShared
JAR?
Этот вопрос подчеркивает переход во второй (похожий) вопрос, поэтому я решил также сгруппировать его здесь.Кажется, чтобы (где это применимо), сохранить Module
реализации на уровне пакета.Таким образом, для каждого пакета будет один Module
конкрет, определяющий привязки для всех типов в этом пакете.Это улучшение по сравнению с одним монолитным Module
, определяющим привязки для всего приложения.
Итак, приведенный выше фрагмент кода (Guice.createInjector(mySwingAppModule)
) на самом деле не , как мой код в конечном итоге будет выглядетькак (извините, я солгал!).
Мой второй вопрос: Каковы "лучшие практики" для создания нескольких инжекторов?
Я вижу, что createInjector(Module... modules)
можетвозьми vararg Module
аргументов.Таким образом, мне кажется, что если я захочу использовать эту лучшую практику " 1-module-per-package ", в какой-то момент мне понадобится код, который либо выглядит следующим образом:
Guice.creatorInjector(package1Module, package2Module, package3Module,
package4Module, package5Module, package6Module, ..., packageNModule);
или, вот так:
Guice.createInjector(package1Module);
Guice.createInjector(package2Module);
Guice.createInjector(package3Module);
...
Guice.createInjector(packageNModule);
Оба они выглядят действительно противно!Есть ли лучший способ сделать это?!?
Заранее спасибо!