Maison > Java > javaDidacticiel > le corps du texte

Comment puis-je intégrer l'injection de dépendances dans mon application JavaFX avec Spring, et quelles sont les différentes approches pour y parvenir ?

Patricia Arquette
Libérer: 2024-10-31 04:30:01
original
244 Les gens l'ont consulté

How can I integrate Dependency Injection into my JavaFX application with Spring, and what are the different approaches to achieve it?

Ajout d'une injection de dépendances dans JavaFX avec Spring (JPA Repo, Service)


Introduction

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.

Options d'intégration

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.

Exemple d'implémentation

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>
Copier après la connexion

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>
Copier après la connexion

Conclusion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!