我有一个使用 Guice 的自定义提供程序,其伪代码如下:
public class MyProvider implements Provider<String> {
public String get() {
System.out.println("Called MyProvider.get()");
return "abcd";
}
}
public class MyModule extends AbstractModule {
protected void configure() {
bind(String.class).toProvider(MyProvider.class);
}
}
public class MyManager {
private MyProvider<String> myProvider;
@Inject
public MyManager(Provider<String> myProvider) { this.myProvider = myProvider; }
}
有一个 MyManager 对象,代表 Guice 连接后我们将来要构建的内容。现在为了真正开始这个,我有点迷失了......
public static void main(String[] args) {
Injector injector = Guice.createInjector(new MyModule());
// not sure what to do here. This doesn't work but I thought it'd be something like this
MyManager mgr = new MyManager(injector.getProvider(MyProvider.class));
}
最佳答案
我不确定这是否是“首选方式”,但这似乎有效:
Injector injector = Guice.createInjector(new MyModule());
MyManager mgr = injector.getInstance(MyManager.class);
想一想是否可以这样做?
关于java - 在 java main 中注入(inject)提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30579474/