我用 guice 编写了一些模块。这些效果很好。我的模块中还有一些需要的单例或记录器,我想将它们注入(inject)到这些模块中。
例如,我有 JpaModule,需要我的配置。
配置模块:
@Singleton
public class ConfigurationModule extends AbstractModule {
@Override
protected void configure() {
bind(Configuration.class).toProvider(ConfigurationProvider.class).in(Singleton.class);
}
}
Jpa模块:
public class JpaDaoModule extends AbstractModule {
@Inject
Configuration config;
@Override
protected void configure() {
// ... Read config and do something
}
}
调用 Guice:
Guice.createInjector(new ConfigurationModule(), new JpaDaoModule());
我怎样才能做到这一点?或者我如何以 guicy 的方式向 JpaModule 提供配置?
/亲切的问候
基督教
这是不可能的。在 configure() 方法中,您可以设置绑定(bind)。您不能指望它们已经可用。此外,模块本身不符合注入(inject)条件。但是,您可以在提供程序或 @Provides 方法中访问 Guice 管理的实例。
@Provides
@Named("myConfigItem")
String provideSomeConfigItem(Configuration config) {
return config.get("myConfigItem");
}
我是一名优秀的程序员,十分优秀!