Développement JAVA


Présentation de CDI

L’API d’injection de dépendance.

Montre un petit exemple utilisant l’API CDI. Cet article minimaliste est une introduction à un autre article sur le développement WEB qui utilisera plus en détail cette API.

 Introduction

Avec la dernière version de Netbeans 8.1 et Glassfish 4.1, lorsque vous créerez un Manged Bean, vous verrez que ce n’est plus l’annotation @ManagedBean qui est utilisée mais @Named.

Il s’agit, en fait d’une nouvelle API nommée CDI   qui est plus générique que l’ancienne. Vous pourrez, par exemple, utiliser cette API dans une application non WEB ou ajouter @Named à un EJB   pour le rendre accessible directement dans votre page WEB.

Attention : Certaines annotations portent le même nom dans l’ancienne et la nouvelle API. Vous ne devrez pas les confondre sous peine de dysfonctionnement. C’est le cas des annotations de définition du scope (durée de vie) du bean. Par exemple, pour @RequestScope :

JSF   javax.faces.bean.RequestScoped
CDI   javax.enterprise.context.RequestScoped

Remarque : Pour pouvoir utiliser cette API, vous devrez utiliser des serveur d’applications Java compatibles JavaEE   6.

 Petit exemple

Pour comprendre le principe, nous allons réaliser un petit exercice pour voir ces nouvelles annotations.

Dans Netbeans, créez ne nouvelle application Web en choisissant :
Nouveau projet/JavaWeb/WebApplication.

Dans les différentes pages et onglets de l’assistant, vous donnerez un nom à votre projet, vous sélectionnerez Glassfish 4.1, JavaEE7 Web, vous cocherez JavaServer Faces. Par défaut, vous serez en JSF   2.2 avec la technologie Facelet.

Cliquez sur Terminer et vous devriez avoir un projet ne contenant qu’une page index.xhtml. Vous pourrez lancer l’exécution du programme pour vérifier que ce dernier ce compile et se déploie bien sous GlassFish. Une page blanche affichant

Hello from Facelets

devrait s’afficher dans le navigateur.

Nous allons créer notre bean. A partir du dossier Source du package cliquez droit, sélectionnez : Nouveau/Autre...
Puis sélectionnez Catégoie:JavaServer Faces et Type de fichier : JSF Managed Bean. Cliquez sur suivant ; Donnez un nom à votre classe (Exemple : BonjourMonde) puis, cliquez sur terminer.

Vous devriez avoir le code suivant :

  1. package exercice1;
  2.  
  3. import javax.inject.Named;
  4. import javax.enterprise.context.Dependent;
  5.  
  6. @Named(value = "bonjourMonde")
  7. @Dependent
  8. public class BonjourMonde {
  9.     public BonjourMonde() {
  10.     }
  11. }

Télécharger

Nous voyons que Netbeans a utilisé les nouvelles annotations avec les packages correspondants. L’annotation @Named a comme paramètre une chaîne définissant le nom de l’instance qui sera utilisée dans une page JSF ou JSP   en langage EL  . L’annotation @Dependent est le scope par défaut et peut donc être omit. Il définie la durée de vie de l’instance par rapport à un contexte : durée de la session, de la requête, de l’application, etc.

Nous allons maintenant ajouter une méthode permettant de renvoyer un message.

  1. public String getMessage()
  2. {
  3.     return "Je suis un bean de type Dependant et je vous salut tous !";
  4.   }
  5. }

Télécharger

Nous allons maintenant modifier le fichier index.xhtml pour utiliser le bean.

  1. <?xml version='1.0' encoding='UTF-8' ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4.      xmlns:h="http://xmlns.jcp.org/jsf/html">
  5.     <h:head>
  6.         <title>Exemple</title>
  7.     </h:head>
  8.     <h:body>
  9.         <h1>Exemple d'utilisation d'un Bean</h1>
  10.        
  11.         <p>Voici le message: "#{bonjourMonde.message}"</p>
  12.        
  13.     </h:body>
  14. </html>

Télécharger

Remarque : Il se peut que vous ayez un message d’erreur à l’exécution de temps en temps. N’hésitez pas dans ce cas, à utiliser la commande Netoyer/reconstruire de Netbeans et tout devrait rentrer dans l’ordre.

 Quelques annotations supplémentaires

Il existe plusieurs autres annotations liées à CDI. En voici quelques unes dont vous aurez rapidement besoin :

Si vous désirez utiliser un bean à partir d’un autre, vous utiliserez l’annotation @Inject

Exemple :

  1. @Named
  2. public class Bean1
  3. {
  4.     ...
  5.     @Inject
  6.     private Bean2 bean2;
  7.     ...
  8. }

Télécharger

Une autre annotation est celle vous permettant d’annoter une méthode d’initialisation du bean qui est @PostConstruct

Exemple :

  1. @Named
  2. public class Bean1
  3. {
  4.     ...
  5.     @PostConstruct
  6.     private void init()
  7.     {
  8.     ...
  9. }

Télécharger

Si vous désirez appofondir le sujet, vous trouverez sur Internet d’autres informations comme, par exemple sur le site developpez.com.

Vous devriez également bientôt trouver sur ce sites d’autres articles qui utiliseont les quelques annotations décites ici.

 Conclusion

L’utilisation de CDI avec Netbeans est très simple puisque c’est le choix fait lorsque l’on utilise l’assistant de création de Managed Bean. Dans les précédentes versions de Netbeans, vous deviez le spécifier. Un autre avantage de la dernière version de CDI est que votre projet n’a plus besoin de posséder un fichier de configuration META-INF/beans.xml. L’implémentation de référence de CDI se nomme WELD et est intégrée à GlassFish 4.1. Si vous utilisez un autre serveur, vous devrez sans doute ajouter manuellement à votre projet une implémentation de CDI. Ce sera le cas avec TOMCAT par exemple. CDI peut également être utilisé avec une application JavaSE   et n’est donc pas réservé aux application JavaEE  .


Article n° 69

Crée par: chris

Créé le: 7 mars 2016

Modifié le: 7 mars 2016

Nombre de visites: 320

Popularité: 11 %

Popularité absolue: 1

Mots clés de cet article


SPIP

2003-2024 LePpf
Plan du site | | RSS 2.0 | Sur YouTube

Visiteurs connectés : 0

Nombre moyen de visites quotidiennes sur le site: 202