スパゲッティから Guice による依存性注入を使用するように変換したい Swing アプリケーションがあります。Guice を使用して構成やタスク キューなどのサービスを提供することはうまくいっていますが、アプリの GUI を使い始めたばかりで、どのように進めればよいかわかりません。
アプリケーションは基本的JFrame
に、JTabbedPane
. 各タブはJPanel
、さまざまなコンポーネントをレイアウトし、特定のボタンが押されたときにアクションを実行するサービスを必要とする個別のサブクラスです。
現在のアプリケーションでは、これは次のようになります。
@Inject
public MainFrame(SomeService service, Executor ex, Configuration config) {
tabsPane = new JTabbedPane();
// Create the panels for each tab and add them to the tabbedpane
somePanel = new SomeTabPanel(service, ex, config);
tabsPane.addTab("Panel 1", somePanel);
someOtherPanel = new SomeOtherTabPanel(service, ex, config);
tabsPane.addTab("Panel 2", someOtherPanel);
... do more stuff
}
明らかに、これは DI のベスト プラクティスに厳密に従っているわけではありません。@Inject
数十のパラメーターを持つコンストラクターが得られるため、タブを使用する必要はありません。Guice を使用して、必要な依存関係を必要なタブ オブジェクトに注入したいのですが、これらの依存関係をすべてタブ コンストラクターに渡す必要はありません。
タブ オブジェクトのすべての依存関係は、私Module
が知っているサービスなので、基本的に私がやりたいと思うことは、必要なオブジェクトを Guice に要求し、それらを構築してもらうことだけです。