2012-01-25 88 views
1

我已经写了一些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.createInjector(new ConfigurationModule(), new JpaDaoModule()); 

我该怎么交流完成这个?或者我该如何将配置提供给JpaModule?

/亲切的问候

基督教

回答

1

这是不可能的。在配置()方法你设置你的绑定。你不能指望它们已经可用。而且,模块本身不适合注射。但是,您可以访问供应商中的Guice管理实例或提供方法@Provides方法。

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

好的,Thx - 帮助日志 – Christian