2012-01-25 63 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