问题描述
我具有下面的Guice模块层次结构。
服务启动器
public class ABCServiceLauncher
{
public static void main(final String[] args) throws Exception
{
new ABCServiceLauncher().execute();
}
private void execute() throws Exception
{
// Initialize the injector
final Injector injector = Guice.createInjector(
Stage.DEVELOPMENT,new EnvironmentModule()
);
}
public class EnvironmentModule extends AbstractModule {
...
@Override
public void configure() {
bind(ConfigHelper.class).toProvider(ConfigHelperProvider.class).in(Singleton.class);
bind(ConfigFactory.class).to(ConfigHelper.class);
install(new ServiceModule());
...
}
}
服务模块
public class ServiceModule extends AbstractModule {
@Override
public void configure() {
// bindings
...
// installation of dependency modules
}
}
对于Config,ABC服务已将ConfigHelperProvider
定义为
public class ConfigHelperProvider implements Provider<ConfigHelper>
{
@Override
public ConfigHelper get()
{
ConfigHelper configHelper = new ConfigHelper();
configHelper.addTypes(mConfigTypes);
ConfigRecorder.setConfigFactory(configHelper);
return configHelper;
}
@Inject
public ConfigHelperProvider
(
final List<ConfigType> configTypes
)
{
mConfigTypes = configTypes;
}
private final List<ConfigType> mConfigTypes;
}
我正在尝试定义一个成员类型为ConfigFactory
@AllArgsConstructor
public class SubPackageModule extends AbstractModule
{
@Override
protected void configure()
{
final ConfigManager configManager = new DefaultConfigManager(configFactory);
install(new ABCSubPackageModule(configManager));
}
private ConfigFactory configFactory;
}
ConfigHelper是ConfigFactory的一种。我想在服务模块中安装ABCSubPackageModule。
我尝试过
@AllArgsConstructor
public class ABCSubPackageModule extends AbstractModule
{
@Override
protected void configure()
{
final Provider<ConfigHelper> configHelperProvider = getProvider(ConfigHelper.Class);
configFactory = configHelperProvider.get()
...
}
private ConfigFactory configFactory;
}
此操作失败,错误为This Provider cannot be used until the Injector has been created
。由于进样器尚未准备就绪,因此可能会出现错误。
如何将configFactory
注入ABCSubPackageModule
中?有没有办法利用ConfigHelperProvider将configFactory注入ABCSubPackageModule?
谢谢, 帕万(Pavan)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)