Dalam aplikasi JavaFX, selalunya perlu menyuntik kebergantungan, seperti repositori JPA atau perkhidmatan Spring, ke dalam kaedah kitaran hayat seperti init(), start(), dan stop(). Walau bagaimanapun, ini boleh mencabar kerana batasan dalam mekanisme suntikan pergantungan JavaFX tradisional.
Terdapat beberapa pendekatan untuk mencapai suntikan pergantungan dalam JavaFX dengan Musim bunga:
1. Menggunakan Aplikasi SpringBoot:
Mengintegrasikan aplikasi JavaFX anda dengan aplikasi SpringBoot ialah cara mudah untuk mengakses keupayaan suntikan kebergantungan penuh Spring. Dengan menganotasi aplikasi anda sebagai @SpringBootApplication, anda boleh memanfaatkan konteks Spring dan menggunakan pendawaian automatik untuk menyuntik kebergantungan ke dalam pengawal dan kacang.
2. Menyuntik Kacang ke dalam Kelas Terurus Bukan Spring:
Jika anda memilih untuk memastikan aplikasi JavaFX anda berasingan daripada Spring, anda boleh menyuntik kebergantungan secara manual menggunakan AutowireCapableBeanFactory Spring. Dalam kaedah init(), anda boleh menggunakan autowireBeanProperties() untuk menyuntik kacang ke dalam contoh kelas aplikasi.
3. Menggunakan Skop Tersuai:
Dengan menganotasi pengawal JavaFX anda dengan @Scope("prototaip"), anda boleh memastikan bahawa setiap tika pengawal anda dicipta dengan set kebergantungan baharu. Ini berguna dalam situasi di mana anda perlu mengekalkan ViewModel yang berasingan untuk paparan berbeza.
Pertimbangkan contoh pengawal JavaFX berikut dengan pendawaian automatik Spring:
<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>
Dalam kaedah init() aplikasi JavaFX anda, muatkan konteks Spring anda dan gunakan kaedah fxmlLoader.setControllerFactory() untuk membenarkan Spring menyuntik kebergantungan ke dalam pengawal 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>
Dengan menggunakan salah satu pendekatan ini, anda boleh berjaya mencapai suntikan kebergantungan dalam JavaFX dengan Spring, membolehkan anda mengakses repositori JPA, perkhidmatan dan kebergantungan lain dalam aplikasi anda. kaedah dan komponen kitaran hayat.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyepadukan Suntikan Ketergantungan ke dalam aplikasi JavaFX saya dengan Spring, dan apakah pendekatan berbeza untuk mencapainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!