Rumah  >  Artikel  >  Java  >  Bagaimanakah saya boleh menyuntik kebergantungan Spring (seperti repositori JPA) ke dalam kaedah kitaran hayat JavaFX?

Bagaimanakah saya boleh menyuntik kebergantungan Spring (seperti repositori JPA) ke dalam kaedah kitaran hayat JavaFX?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 09:40:291024semak imbas

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

Menambah Suntikan Ketergantungan Spring pada JavaFX: Repositori dan Perkhidmatan JPA

Masalahnya

Aplikasi JavaFX mempunyai cangkuk kitaran hayat yang telah ditetapkan (init(), start( ), dan stop()) untuk menguruskan acara permulaan aplikasi dan kitaran hayat. Walau bagaimanapun, menyuntik kebergantungan Spring (seperti repositori JPA) terus ke dalam kaedah ini mungkin tidak berfungsi. Ini kerana JavaFX mengasingkan kaedah kitaran hayatnya daripada konteks aplikasi Spring.

Pilihan Suntikan Kebergantungan

Pilihan 1: Gunakan Aplikasi But Spring

Pertimbangkan menukar aplikasi JavaFX anda kepada aplikasi Spring Boot. Ini menyediakan integrasi penuh dengan rangka kerja Spring, termasuk suntikan kebergantungan, repositori JPA dan kemudahan Spring lain.

Pilihan 2: Suntikan Ketergantungan Manual

1. Penyepaduan melalui JavaFXMLLoader

Gunakan kaedah setControllerFactory pada FXMLLoader untuk membenarkan Spring membuat instantiate pengawal FXML dan menyuntik kebergantungan Spring:

<code class="java">fxmlLoader.setControllerFactory(springContext::getBean);</code>

Annotate pengawal JavaFX anda dengan @Component dan @Autowired Spring anotasi untuk menerima tanggungan:

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

    @FXML
    private Label usernameLabel;

    @Autowired
    public SpringService mySpringService;

    ...
}</code>

2. Menyuntik ke dalam Kelas Aplikasi JavaFX

Jika anda ingin menyuntik Spring bean ke dalam kelas aplikasi JavaFX:

<code class="java">springContext
    .getAutowireCapableBeanFactory()
    .autowireBeanProperties(
        this,
        AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE,
        true
    );</code>

Pengasingan Kebimbangan

Untuk mengekalkan pemisahan kebimbangan , adalah disyorkan untuk memisahkan aplikasi Spring Boot daripada aplikasi JavaFX. Jalankan aplikasi Spring Boot untuk memulakan konteks Spring dan hantar ke aplikasi JavaFX.

Melalukan Argumen Baris Perintah daripada JavaFX ke SpringBoot

Gunakan getParameters().getRaw().toArray( kaedah String[0]) baharu untuk menghantar argumen daripada JavaFX kepada Spring Boot.

Nota Tambahan

  • Anotasi @Controller boleh digunakan untuk pengawal JavaFX, tetapi disyorkan untuk menggunakan @ Komponen untuk pemisahan kebimbangan yang lebih jelas.
  • @Scope("prototaip") digunakan untuk mencipta tika pengawal baharu bagi setiap objek paparan FXML.
  • Untuk maklumat lebih terperinci, rujuk pautan yang disediakan dalam kotak jawapan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyuntik kebergantungan Spring (seperti repositori JPA) ke dalam kaedah kitaran hayat JavaFX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn