IAm*_*aja 7 java dependency-injection guice
我有一节课:
public class FizzBuzz {
@Named("Red") private String redService;
public static void main(String[] args) {
GuiceTest testApp = new GuiceTest();
testApp.run();
}
private void run() {
Injector inj = Guice.createInjector(new MyModule());
redService = (String)inj.getInstance(String.class);
// Should print "red-service" but is instead an empty string!
System.out.println("redService = " + redService);
}
// ... Rest of class omitted for brevity
}
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(String.class).annotatedWith(Names.named("Red")).toInstance("red-service");
}
}
Run Code Online (Sandbox Code Playgroud)
在我的模块中,我指示Guice将所有String.class实例@Named"Red" 绑定到字符串实例"red-service",但是我没有在输出的print语句中看到它.我如何错误地使用Guice?
Jan*_*ski 23
让我简要总结一下这里已经提出的一些意见......
@Inject注释FizzFuzz.使用静态main方法引导您的应用程序(不是run()).bindConstant.这会带给你这样的东西:
public class FizzFuzz {
@Inject
@Named("red")
private String service;
public static void main(String[] args) {
FizzFuzz fizzFuzz = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bindConstant().annotatedWith(Names.named("red")).to("red-service");
}
}).getInstance(FizzFuzz.class);
System.out.println(fizzFuzz.service);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23115 次 |
| 最近记录: |