Dans les applications JavaFX, il est souvent nécessaire d'injecter des dépendances, telles que les référentiels JPA ou les services Spring, dans les méthodes de cycle de vie comme init(), start() et stop(). Cependant, cela peut être difficile en raison des limitations des mécanismes d'injection de dépendances JavaFX traditionnels.
Il existe plusieurs approches pour réaliser l'injection de dépendances dans JavaFX avec Printemps :
1. Utilisation d'une application SpringBoot :
L'intégration de votre application JavaFX à une application SpringBoot est un moyen simple d'accéder à toutes les capacités d'injection de dépendances de Spring. En annotant votre application en tant que @SpringBootApplication, vous pouvez exploiter le contexte Spring et utiliser le câblage automatique pour injecter des dépendances dans les contrôleurs et les beans.
2. Injecter des beans dans des classes non gérées par Spring :
Si vous préférez garder votre application JavaFX séparée de Spring, vous pouvez injecter manuellement des dépendances à l'aide de AutowireCapableBeanFactory de Spring. Dans la méthode init(), vous pouvez utiliser autowireBeanProperties() pour injecter des beans dans l'instance de classe d'application.
3. Utilisation du cadrage personnalisé :
En annotant vos contrôleurs JavaFX avec @Scope("prototype"), vous pouvez vous assurer que chaque instance de votre contrôleur est créée avec un nouvel ensemble de dépendances. Ceci est utile dans les situations où vous devez conserver des ViewModels séparés pour différentes vues.
Considérez l'exemple suivant d'un contrôleur JavaFX avec câblage automatique 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>
Dans la méthode init() de votre application JavaFX, chargez votre contexte Spring et utilisez la méthode fxmlLoader.setControllerFactory() pour permettre à Spring d'injecter des dépendances dans les contrôleurs 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>
En utilisant l'une de ces approches, vous pouvez réussir l'injection de dépendances dans JavaFX avec Spring, vous permettant d'accéder aux référentiels, services et autres dépendances JPA au sein de votre application. méthodes et composants du cycle de vie.
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!