Внедрение синглтона в модуль Guice - PullRequest
1 голос
/ 25 января 2012

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

Например, у меня есть JpaModule, где мне нужна моя конфигурация.

ConfigurationModule:

@Singleton
public class ConfigurationModule extends AbstractModule {

  @Override
  protected void configure() {
    bind(Configuration.class).toProvider(ConfigurationProvider.class).in(Singleton.class);
  }
}

JpaModule:

public class JpaDaoModule extends AbstractModule {

  @Inject
  Configuration config;

  @Override
  protected void configure() {
    // ... Read config and do something
  }
}

Позвонить в Guice:

Guice.createInjector(new ConfigurationModule(), new JpaDaoModule());

Как я могу это сделать? Или как я могу предоставить конфигурацию JpaModule простым способом?

/ С уважением

Christian

1 Ответ

1 голос
/ 25 января 2012

Это невозможно. В методе configure () вы устанавливаете привязки. Вы не можете ожидать, что они уже будут доступны. Кроме того, модули не имеют права на инъекцию как таковую. Однако вы можете получить доступ к экземплярам, ​​управляемым Guice, у провайдеров или @ Обеспечивает методы.

@Provides
@Named("myConfigItem")
String provideSomeConfigItem(Configuration config) {
    return config.get("myConfigItem");
}
...