Les applications JavaFX ont des hooks de cycle de vie prédéfinis (init(), start( ), et stop()) pour gérer l'initialisation des applications et les événements du cycle de vie. Cependant, l'injection de dépendances Spring (telles que les référentiels JPA) directement dans ces méthodes peut ne pas fonctionner. En effet, JavaFX isole ses méthodes de cycle de vie du contexte de l'application Spring.
Option 1 : Utiliser une application Spring Boot
Envisagez convertir votre application JavaFX en application Spring Boot. Cela fournit une intégration complète avec le framework Spring, y compris l'injection de dépendances, les référentiels JPA et d'autres fonctionnalités Spring.
Option 2 : Injection manuelle de dépendances
1. Intégration via JavaFXMLLoader
Utilisez la méthode setControllerFactory sur FXMLLoader pour permettre à Spring d'instancier les contrôleurs FXML et d'injecter des dépendances Spring :
<code class="java">fxmlLoader.setControllerFactory(springContext::getBean);</code>
Annotez vos contrôleurs JavaFX avec @Component et @Autowired Spring annotations à recevoir dépendances :
<code class="java">@Component @Scope("prototype") public class DemoController { @FXML private Label usernameLabel; @Autowired public SpringService mySpringService; ... }</code>
2. Injection dans la classe d'application JavaFX
Si vous souhaitez injecter des beans Spring dans la classe d'application JavaFX :
<code class="java">springContext .getAutowireCapableBeanFactory() .autowireBeanProperties( this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true );</code>
Pour maintenir la séparation des préoccupations , il est recommandé de séparer l'application Spring Boot de l'application JavaFX. Exécutez l'application Spring Boot pour initialiser le contexte Spring et transmettez-le à l'application JavaFX.
Utilisez getParameters().getRaw().toArray( nouvelle méthode String[0]) pour transmettre les arguments de JavaFX à Spring Boot.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!