我的核心应用程序已完成。我能够成功加载模块,但我仍然无法正确使用 guice 在我的模块中注入依赖项。我的核心应用程序使用服务加载器加载模块,并使用 guice 的 AbstractModule 的安装方法安装它们。这是一个示例代码:(简化)
@Override
protected void configure() {
ServiceLoader<IModule> modules = ServiceLoader.load(IModule, ucl);
for (IModule module : modules) {
install(module);
}
}
每个模块都实现了 IModule 接口,该接口扩展了 guice 的 Module 接口。让我感到困惑的是,当不建议到处都有注入器时,我如何提供插件实例(例如视图实例)。我阅读了@Provides 注释,我认为这是一个可能的解决方案,但我面临的另一个问题是其中一些具有需要注入的依赖项。例如,我的 pluginview 注入了一个插件控制器的实例。鉴于这种情况,我不确定如何使用提供者接口。建议将不胜感激
public PlugIn implements IModule{
@Override
public void configure(Binder binder){
binder.bind(View.class).to(PlugInView.class);
}
public View getView(){
//Should return a view instance
//Still unsure how to provide this
}
}
public PlugInView extends View{
@Inject
private PlugInView(PlugInController controller){
//Do stuff with controller
}
}