
Spring を使用した JavaFX への依存性注入の統合
JavaFX には、アプリケーションの初期化 (init()) 中にアクションを定義できるライフサイクル フックが用意されています。開始 (start())、および停止 (stop())。ただし、これらのメソッド内で Spring JPA リポジトリなどの自動配線された依存関係にアクセスするのは困難な場合があります。
依存関係注入のオプション
依存関係注入を JavaFX アプリケーションに統合するには、複数の方法があります。
基本的な統合の例
SpringBoot アプリケーションを作成してみましょうJavaFX と統合します:
<code class="java">@SpringBootApplication
public class DemoApplication extends Application {
private ConfigurableApplicationContext springContext;
private Parent root;
@Override
public void init() throws Exception {
springContext = SpringApplication.run(DemoApplication.class);
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/sample.fxml"));
fxmlLoader.setControllerFactory(springContext::getBean);
root = fxmlLoader.load();
}
// ...
}</code>JavaFX コントローラーの自動配線
JavaFX コントローラーを自動配線するには:
<code class="java">@Component
@Scope("prototype")
public class DemoController {
@FXML
private Label usernameLabel;
@Autowired
public SpringService mySpringService;
// ...
}</code>コントローラーに注釈を付ける@Component と @Autowired を使用して Spring 依存関係を注入します。 @Scope("prototype") アノテーションにより、ロードされたビューごとに新しいコントローラー インスタンスが確実に作成されます。
懸念事項の分離
JavaFX アプリケーションを分離することをお勧めします。懸念事項の分離を強化するための Spring アプリケーション。アプリケーション クラスの名前を変更します (例: DemoFxApplication)。
JavaFX アプリケーション クラスの自動接続
JavaFX アプリケーション クラスの依存関係を自動接続するには:
<code class="java">springContext
.getAutowireCapableBeanFactory()
.autowireBeanProperties(
this,
AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE,
true
);</code>その他の考慮事項
これらの手法は柔軟性を提供し、Spring を使用して JavaFX アプリケーションに依存関係注入を効果的に統合できます。ただし、JavaFX での依存関係の注入は単純な主題ではなく、これらのアプローチは探索のためのフレームワークのみを提供することに注意することが重要です。
以上がSpring dependency Injection を JavaFX アプリケーションに統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。