ホームページ  >  記事  >  Java  >  Spring を使用して依存関係の注入を JavaFX アプリケーションに統合するにはどうすればよいですか?また、それを実現するためのさまざまなアプローチには何がありますか?

Spring を使用して依存関係の注入を JavaFX アプリケーションに統合するにはどうすればよいですか?また、それを実現するためのさまざまなアプローチには何がありますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 04:30:01229ブラウズ

How can I integrate Dependency Injection into my JavaFX application with Spring, and what are the different approaches to achieve it?

Spring を使用した JavaFX への依存性注入の追加 (JPA リポジトリ、サービス)


はじめに

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。