Guice/Gin. Инъекция фабрики или разные инъекторы для разных
От: trupanka  
Дата: 04.12.11 20:35
Оценка:
Вобщем нужно разобраться с DI-фреймворком Guice и в частности с его воплощением в GWT — Gin.
В GWT-модуль в entry point создается Ginjector и производится инъекция зависимостей.

private InjectorService injector = GWT.create(InjectorService.class);


@GinModules({PlaceContollerInject.class, RootViewInject.class})
public interface InjectorService extends Ginjector {
  RootView getRootView();
  PlaceController getPlaceConroller();
}


public class RootViewInject extends AbstractGinModule {
  @Override
  protected void configure() {
    bind(RootView.class).to(RootViewImpl.class);
  }
}


Затем была сделана мобильная версия сайта c другим модулем.

public class RootViewMobileInject extends AbstractGinModule {
  @Override
  protected void configure() {
    bind(RootView.class).to(RootViewMobileImpl.class);
  }
}




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

Помогите, пожалуста.
java guice gin gwt
Re: Guice/Gin. Инъекция фабрики или разные инъекторы для раз
От: dotidot Россия  
Дата: 05.12.11 15:45
Оценка:
Здравствуйте, trupanka, Вы писали:


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

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

что то вроде такого:

<replace-with class="A">
    <when-type-is class="B"/>
</replace-with>
Re: Guice/Gin. Инъекция фабрики или разные инъекторы для раз
От: dotidot Россия  
Дата: 05.12.11 15:47
Оценка:
Здравствуйте, trupanka, Вы писали:

T>Помогите, пожалуста.


насколько помню gin просто код генерит и в рантайме там ничего кофигурять нельзя. то есть чиста в рантайме выбрать реализацию не получится. вообще DeferredBinding самое оно. все равно мобильную версию надо облегченную делать.
Re[2]: Guice/Gin. Инъекция фабрики или разные инъекторы для
От: Аноним  
Дата: 07.12.11 04:30
Оценка:
Здравствуйте, dotidot, Вы писали:

D>Здравствуйте, trupanka, Вы писали:



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

D>можно через реплейсменты.
D>под основную и мобильную версию делаются отдельные gwt модули (опционально наследующие от общего) в которых прописывается замена на конкретную имплементацию

D>что то вроде такого:


D>
D><replace-with class="A">
D>    <when-type-is class="B"/>
D></replace-with>
D>


а как быть с Guice, как тама нада делать в схожей ситуации (разные имплементации)
Re[3]: Guice/Gin. Инъекция фабрики или разные инъекторы для
От: dotidot Россия  
Дата: 07.12.11 05:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а как быть с Guice, как тама нада делать в схожей ситуации (разные имплементации)


модули делать разные, или в рантайме регистрацию по условию (например по значению проперти)
да и вообще как угодно, там ограничений особо нет
Re[4]: Guice/Gin. Инъекция фабрики или разные инъекторы для
От: Аноним  
Дата: 07.12.11 06:43
Оценка:
Здравствуйте, dotidot, Вы писали:

D>Здравствуйте, Аноним, Вы писали:


А>>а как быть с Guice, как тама нада делать в схожей ситуации (разные имплементации)


D>модули делать разные, или в рантайме регистрацию по условию (например по значению проперти)

D>да и вообще как угодно, там ограничений особо нет

это немножко раздражает... ну да ладно, спасиба за советы типа
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.