Chapitre Développement avec Quarkus
Utilisation de CDI avec Quarkus
Ce cours explique l'utilisation de CDI (Contexts and Dependency Injection) dans Quarkus. Il couvre la découverte de beans, la configuration des exécutables natifs et des membres privés, les fonctionnalités supportées et les limitations. Le cours explore des fonctionnalités non standards telles que l'instanciation anticipée des beans, le cycle de vie du contexte de requête, l'injection simplifiée des constructeurs et la suppression des beans inutilisés. Il inclut aussi des extensions pour le temps de compilation, des fonctionnalités en mode développement, et la configuration stricte et ArC. Pour plus de détails, consultez le guide de référence Quarkus CDI.
Guide de Référence CDI Quarkus
Introduction à CDI et CDI Lite
Contexts and Dependency Injection (CDI) offre des services pour gérer les dépendances et le cycle de vie des objets en Java EE. CDI Lite est une version allégée idéale pour les microservices et les applications cloud-native.
Découverte de Beans
Comment Générer un Index Jandex
./mvnw install -Dquarkus.index-dependency=<groupId>:<artifactId>
Comment Exclure des Types et Dépendances de la Découverte
<beans>
<scan>
<exclude name="com.example.MyBean"/>
</scan>
</beans>
Exécutables Natifs et Membres Privés
Configuration de la Réflexion
Utilisez reflect-config.json
pour inclure les membres privés pour la réflexion dans les exécutables natifs.
Fonctionnalités Supportées et Limitations
La plupart des fonctionnalités CDI sont supportées, avec certaines limitations sur les interceptors et décorateurs.
Fonctionnalités Non Standard
Instanciation Anticipée des Beans
Utilisez @Startup
pour instancier les beans de manière anticipée.
Cycle de Vie du Contexte de Requête
Prolongez le cycle de vie du contexte de requête en utilisant @RequestScoped
.
Champs Injectés Qualifiés
@Inject @MyQualifier MyBean myBean;
Injection Simplifiée des Constructeurs
public MyBean(MyService myService) {
this.myService = myService;
}
Suppression des Beans Inutilisés
Les beans inutilisés sont automatiquement supprimés lors de la construction pour réduire l'empreinte.
Beans Par Défaut
Utilisez @DefaultBean
pour fournir une implémentation par défaut.
Activation des Beans pour un Profil de Construction Quarkus
Activez les beans pour des profils de construction spécifiques en utilisant @IfBuildProfile
.
Activation des Beans pour les Propriétés de Construction Quarkus
Activez les beans basés sur les propriétés de construction en utilisant @IfBuildProperty
.
Déclaration d'Alternatives Sélectionnées
Utilisez @Alternative
pour déclarer une implémentation alternative.
Déclaration Simplifiée de Méthodes Productrices
Simplifiez la déclaration en utilisant @Produces
.
Interception des Méthodes Statistiques
Interceptez les méthodes statiques en utilisant @Interceptor
.
Prise en Charge des Classes et Méthodes 'final'
Support pour les classes et méthodes finales dans CDI.
Concurrence Gérée par le Conteneur
Utilisez la concurrence gérée par le conteneur pour de meilleures performances.
Liaisons d'Intercepteur Répétables
Utilisez des annotations répétables pour les liaisons d'intercepteur.
Mise en Cache du Résultat de la Recherche Programmatique
Mettez en cache les résultats des recherches programmatiques CDI pour améliorer les performances.
Choix Déclaratif des Beans pour la Recherche Programmatique
Choisissez déclarativement les beans pour la recherche programmatique en utilisant @Lookup
.
Injection Intuitive de Plusieurs Instances de Beans
Injectez plusieurs instances de beans en utilisant @Any
.
Ignorer les Liaisons d'Intercepteur au Niveau de la Classe pour les Méthodes et Constructeurs
Utilisez des annotations pour ignorer les liaisons d'intercepteur au niveau de la classe pour des méthodes ou constructeurs spécifiques.
Exceptions Lancées par une Méthode Observatrice Asynchrone
Gérez les exceptions lancées par des méthodes observatrices asynchrones.
Extensions de Temps de Compilation
Utilisez les extensions Quarkus pour améliorer les capacités de temps de compilation.
Mode Développement
Surveillance des Invocations de Méthodes Métiers et des Événements
Surveillez les méthodes métiers et les événements en mode développement.
Mode Strict
Appliquez des règles CDI plus strictes pendant le développement pour une meilleure qualité.
Référence de Configuration ArC
Options de configuration détaillées pour CDI dans Quarkus.
Objectifs
Notions Clés à Retenir
- CDI et CDI Lite : Gestion des dépendances et du cycle de vie des objets.
- Découverte de Beans : Utilisation de Jandex Index et exclusion de types.
- Exécutables Natifs : Configuration des membres privés pour la réflexion.
- Fonctionnalités Supportées : Limites sur les interceptors et décorateurs.
- Instanciation Anticipée : Utilisation de @Startup.
- Cycle de Vie du Contexte de Requête : Utilisation de @RequestScoped.
- Injection Qualifiée et Simplifiée : Différenciation et injection automatique.
- Suppression des Beans Inutilisés : Réduction de l'empreinte.
- Extensions et Mode Développement : Amélioration des capacités et surveillance.
- Configuration ArC : Options détaillées pour la configuration de CDI.