我不确定我是否完全理解依赖注入背后的想法,尤其是使用 Guice。
我有相当大的摇摆应用程序,我想介绍一下 guice 来解耦这个应用程序。假设我在主课上有注射器
Guice.createInjector(new BindingModule());
Application app = injector.getInstance(Application.class);
app.run();
它有效。如果我有一些字段,比如说 JPanel,在 Application 类中,用 @Inject 注释然后它被注入。但是,如果我在 Application 构造函数中手动创建一些东西,而不是示例中的 JTree 将不会被注入(假设一切都配置正确)。
class Application {
@Inject JPanel mainPanel //this will be injected
JPanel otherPanel;
public Application() {
otherPanel = new MyNewPanel();
mainPanel.add(otherPanel);
}
}
class MyNewPanel extends JPanel {
@Inject JTree tree; //this will not be injected
public MyNewPanel() {
add(tree);
}
}
我的问题是,我是否需要让所有注入的对象控制要注入的 guice。我无法打破控制,就像我对otherPanel
.