JavaFX アプリケーションでは、多くの場合、JPA リポジトリや Spring サービスなどの依存関係を、init()、start()、stop() などのライフサイクル メソッドに注入する必要があります。ただし、従来の JavaFX 依存関係注入メカニズムには制限があるため、これは困難な場合があります。
JavaFX で依存関係注入を実現するには、いくつかのアプローチがあります。春:
1. SpringBoot アプリケーションの使用:
JavaFX アプリケーションを SpringBoot アプリケーションと統合することは、Spring の完全な依存関係注入機能にアクセスする簡単な方法です。アプリケーションに @SpringBootApplication のアノテーションを付けることで、Spring コンテキストを活用し、自動配線を使用して依存関係をコントローラーと Bean に注入できます。
2.非 Spring 管理クラスへの Bean の注入:
JavaFX アプリケーションを Spring から分離しておきたい場合は、Spring の AutowireCapableBeanFactory を使用して依存関係を手動で注入できます。 init() メソッドでは、autowireBeanProperties() を使用してアプリケーション クラス インスタンスに Bean を注入できます。
3.カスタマイズされたスコープの使用:
JavaFX コントローラーに @Scope("prototype") のアノテーションを付けることにより、コントローラーの各インスタンスが新しい依存関係セットを使用して作成されるようにすることができます。これは、異なるビューに対して個別の ViewModel を維持する必要がある場合に役立ちます。
Spring 自動配線を備えた次の JavaFX コントローラーの例を考えてみましょう。
<code class="java">@Component @Scope("prototype") public class DemoController { @Autowired private EmployeeRepo employeeRepo; public void initialize() { List<Employee> employees = employeeRepo.findAll(); // Handle the retrieved employees here... } }</code>
JavaFX アプリケーションの init() メソッドで、Spring コンテキストをロードし、fxmlLoader.setControllerFactory() メソッドを使用して、Spring が FXML コントローラーに依存関係を挿入できるようにします。
<code class="java">public void init() throws Exception { ApplicationContext springContext = SpringApplication.run(DemoApplication.class); FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/sample.fxml")); fxmlLoader.setControllerFactory(springContext::getBean); root = fxmlLoader.load(); }</code>
これらのアプローチのいずれかを利用することで、Spring を使用した JavaFX で依存関係の注入を正常に実現でき、アプリケーション内の JPA リポジトリ、サービス、およびその他の依存関係にアクセスできるようになります。ライフサイクルのメソッドとコンポーネント。
以上がSpring を使用して依存関係の注入を JavaFX アプリケーションに統合するにはどうすればよいですか?また、それを実現するためのさまざまなアプローチには何がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。