在guice模块中注入单例

时间:2012-01-25 07:03:22

标签: java dependency-injection guice

我用guice编写了一些模块。这些都很有效。 我还有一些单件或我需要的记录器,我想在这些模块中注入。

例如,我有我的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());

我怎样才能做到这一点?或者我如何以Jicy方式向JpaModule提供配置?

/亲切的问候

基督教

1 个答案:

答案 0 :(得分:1)

这是不可能的。在 configure()方法中,您可以设置绑定。你不能指望它们已经可用。此外,模块本身不符合注射条件。但是,您可以访问提供程序中的Guice托管实例或 @Provides 方法。

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