Dernière modification : Dec 08 , 2024

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.

Guide de Référence CDI Quarkus

Created by Sylvain Leroy


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.

Exercices