Dependency Injection 全般の背後にある考え方、特に 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
。