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 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>
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.
Gunakan getParameters().getRaw().toArray( kaedah String[0]) baharu untuk menghantar argumen daripada JavaFX kepada Spring Boot.
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!