【发布时间】:2015-10-09 11:19:27
【问题描述】:
我是 Google Guice 的新手,需要一点帮助。我创建了一个这样的模块:
public interface Foo {
Bar doSomething();
}
public class MyFoo implements Foo {
Bar doSomething() {
// create an instance of MyBar
}
}
public interface Bar {
void run();
}
public interface MyBar implements Bar {
void run();
}
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(Foo.class).to(MyFoo.class);
}
}
我的问题是:在“MyFoo”类中创建 MyBar 实例的正确方法是什么?这样做感觉不对:
public class MyFoo implements Foo {
Bar doSomething() {
MyBar mybar = new MyBar();
return mybar;
}
}
有没有办法在我需要的时候通过 MyModule 注入一个新的 MyBar 实例,或者我必须在 MyBar 的构造函数中注入一个工厂来创建 MyBar 实例? 如果我必须使用工厂,我可以控制通过模块生成哪个实现吗?
【问题讨论】:
标签: java dependency-injection guice inject