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 アプリケーションに渡します。
getParameters().getRaw().toArray( new String[0]) メソッドを使用して、JavaFX から Spring Boot に引数を渡します。
以上がSpring の依存関係 (JPA リポジトリなど) を JavaFX ライフサイクル メソッドに注入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。