Spring の依存関係 (JPA リポジトリなど) を JavaFX ライフサイクル メソッドに注入するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-31 09:40:29
オリジナル
976 人が閲覧しました

How can I inject Spring dependencies (like JPA repositories) into JavaFX lifecycle methods?

JavaFX への Spring 依存関係インジェクションの追加: JPA リポジトリとサービス

問題

JavaFX アプリケーションには事前定義されたライフサイクル フック (init()、start() )、および stop()) は、アプリケーションの初期化とライフサイクル イベントを管理します。ただし、Spring の依存関係 (JPA リポジトリなど) をこれらのメソッドに直接注入しても機能しない場合があります。これは、JavaFX がそのライフサイクル メソッドを Spring アプリケーション コンテキストから分離しているためです。

依存関係挿入オプション

オプション 1: Spring Boot アプリケーションを使用する

検討JavaFX アプリケーションを Spring Boot アプリケーションに変換します。これにより、依存関係注入、JPA リポジトリ、その他の Spring 機能を含む Spring フレームワークとの完全な統合が提供されます。

オプション 2: 手動依存関係注入

1。 JavaFXMLLoader による統合

FXMLLoader の setControllerFactory メソッドを使用して、Spring が FXML コントローラーをインスタンス化し、Spring の依存関係を注入できるようにします。

<code class="java">fxmlLoader.setControllerFactory(springContext::getBean);</code>
ログイン後にコピー

@Component および @Autowired Spring で JavaFX コントローラーにアノテーションを付けます。依存関係を受け取るためのアノテーション:

<code class="java">@Component
@Scope("prototype")
public class DemoController {

    @FXML
    private Label usernameLabel;

    @Autowired
    public SpringService mySpringService;

    ...
}</code>
ログイン後にコピー

2. JavaFX アプリケーション クラスへの注入

JavaFX アプリケーション クラスに Spring Bean を注入する場合:

<code class="java">springContext
    .getAutowireCapableBeanFactory()
    .autowireBeanProperties(
        this,
        AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE,
        true
    );</code>
ログイン後にコピー

懸念の分離

懸念の分離を維持するには、Spring Boot アプリケーションを JavaFX アプリケーションから分離することをお勧めします。 Spring Boot アプリケーションを実行して Spring コンテキストを初期化し、それを JavaFX アプリケーションに渡します。

JavaFX から SpringBoot にコマンドライン引数を渡す

getParameters().getRaw().toArray( new String[0]) メソッドを使用して、JavaFX から Spring Boot に引数を渡します。

補足

  • @Controller アノテーションは JavaFX コントローラーに使用できますが、@ を使用することをお勧めします。懸念事項をより明確に分離するためのコンポーネント。
  • @Scope("prototype") は、FXML ビュー オブジェクトごとに新しいコントローラー インスタンスを作成するために使用されます。
  • 詳細については、提供されているリンクを参照してください。回答ボックスに記入してください。

以上がSpring の依存関係 (JPA リポジトリなど) を JavaFX ライフサイクル メソッドに注入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!