Spring – Injection de dépendance (@Autowired, @Qualifier & @Ressource)

Spring – Injection de dépendance (@Autowired, @Qualifier & @Ressource)

Hello les amis, dans ce tuto nous allons voir comment faire l’injection de dépendance en utilisant l’annotation @Autowired, pour plus de detail sur le DI(Injection de dépendance) je vous invite mes amis d’aller voir ce lien.

1 –  @Autowired :

C’est une annotation qui nous permet de faire l’injection de dépendances entre les beans de l’application (Spring va tout faire), il suffit juste d’annoter un constructeur ou une méthode avec cette dernière. et le conteneur Spring va faire la suite(La creation du bean, le chercher et l’injecter automatiquement…).

  •  Pour bien comprendre le principe je vous propose de faire un petit exemple :

On va utiliser le principe du couplage faible “ne pas avoir beacoup de dépendance entre les classes de votre applicaion ce qui rend la maintenance de ce tte dernière facile”, donc on va créer une classe dao et une interface idao puis une classe metier qui va accéder à la partie dao en utilisant que l’interface :

Donc maintenant, on va créer la classe Metier et utiliser le principe de DI :

Donc, mtn une fois le conteneur Spring se lance, il va crée l’instance de la classe Dao et la classe Metier(Principe Ioc), et il va faire l’injection de dépendance (injecter l’objet créeé de la classe Dao dans la propriété de l’interface IDao qui existe dans la classe Metier)

  • Quelques remarques à retenir :

la valeur par défaut de l’annotation @Autowired est true, ca veut dire qu’il faut obligatoirement initialiser le bean à injecter, si le Conteneur Spring ne trouve pas le bean une exception de type BeanCreationException est levée, on peut bien sur modifier cette annotation en mettant la valeur à false comme suit :

@Autowired(required=false).

Le  conteneur spring va lever des exceptions de type BeanCreationException dans le deux cas suivant :

– Si @Autowired ne trouve aucun bean correspondant au type de l’entité annoté sauf si l’attribut requierd est false.

– Si @Autowired trouve plusieurs beans correspondants au type annoté et que l’élément n’est pas un tableau ou collection.

2 – @Qualifier :

A côté de l’annotation @Autowired, on peut utiliser d’autres annotations pour nous faciliter la vie :D, nous allons voir les annotations @Qualifier & @Ressource

@Qualifier : c’est une annotation utilisée lorsqu’on a plusieurs classes qui implémentent une interface, et on veux faire l’injection des dépendances en utilisant cet interface.

  • Un petit exemple pour bien comprendre :

Dans une seule application , on a une interface IDao qui sera implémentée par 3 classes : DaoJdbc, DaoHibernate, DaoSpringData.

La déclaration des 3 classes :

Dans la partie Métier on a une classe qui va utiliser la partie Dao(pour respecter la principe du couplage faible on va utiliser l’interface IDao) :

Donc puisqu’on 3 classes qui implémentent cette interface, on doit utiliser un truc pour spécifier à la partie métier quelle classe doit utiliser (utilisation de l’annotation Qualifier).

@Qualifier est utilisée donc pour montrer au Conteneur Spring la classe à injecter (dans le cas de plusieurs classes).

2 – @Resource:

L’annotation @Resource : on peut dire qu’elle s’agit d’une fusion entre l’annotation @Autowired et @Qualifier, ci-dessous un petit exemple :

On va utiliser l’exemple précèdent, ci-dessous la déclaration des 3 classes :

Vous avez remarqué qu’il n’ y a aucun changement au niveau de la première partie, par contre dans la partie Métier on a une classe qui va utiliser la partie Dao(pour respecter la principe du couplage faible on va utiliser l’interface IDao) :

Donc comme vous voyez au lieu d’utiliser deux annotation @Autowired et @Qualifier on utilise @Resource

 

 

 

Le design pattern Singleton

Le design pattern Singleton

Le design pattern Singleton est un patron de conception qui est utilisé pour s’assurer qu’une classe ne sera instanciée qu’une seule fois. l’utilisation de ce dernier rend l’application plus rapide car il libére la mémoire puisque l’objet ne se crée qu’une seule fois.

Le singleton contenant une méthode qui crée une instance uniquement s’il n’en existe pas encore. Sinon elle renvoie une référence vers l’objet qui existe déjà. Le constructeur de la classe doit être privé, afin de s’assurer que la classe ne puisse être instanciée autrement que par la méthode de création contrôlée.

Dans les applications multi-thread la méthode doit être déclarée avec lemot clé synchronized. Si deux processus légers exécutent en même temps la méthode de création alors que l’objet unique n’existe pas encore, il faut absolument s’assurer qu’un seul créera l’objet, et que l’autre obtiendra une référence vers ce nouvel objet.

Pour appeler la méthode sans instancier la classe, il faudrait la déclarer static.

Ci-dessous une vidéo pour vous montrer un exemple d’utilisation du dusign pattern Singleton.

Statement & PreparedStatement

Statement & PreparedStatement

Statement : c’une interface qui nous fournit des méthodes pour exécuter des requêtes avec une bd. Cette dernière est une usine de Resultset.

Les méthodes qu’on peut utiliser sont les suivantes :

– public ResultSet executeQuery(String sql) : on l’utilise pour executer une requete de type select, elle nous retourne un objet de type ReseltSet.

public int executeUpdate(String sql) : utiliser pour executer une requete de type create, drop, insert, update ou delete.

public boolean execute(String sql) : pour executer des requetes qui vont retourner plusieurs résultats.

public int[] executeBatch() : pour executer des commandes batch.

PreparedStatement : c’une sous interface de Statement, on l’utilise pour exécuter des requêtes paramètres. L’utilisation de PreparedStatement rend l’application rapide car les requêtes paramètres sont compilées une seule fois.

L’interface Connection

Connection : L’interface Connection est une interface qui joue en fait le rôle de session entre une application et une bd, et c’est via cette interface qu’on peut fabriquer des Statement, PreparedStatement, and DatabaseMetaData.

Les classes qui implémentent cette interface doivent obligatoirement redéfinir les méthodes suivantes :

public Statement createStatement() : créer un objet de type statement pour executer des requetes SQL.

public Statement createStatement(int resultSetType,int resultSetConcurrency) : Crée un objet Statement qui va générer des objets ResultSet avec le type et la simultanéité donnée

public void setAutoCommit(boolean status) : on l’utilise pour modifier l’etat du commit, il est true par défaut.

public void commit() : souvegarder toutes les modifications faites après le dernier commit.

public void rollback() : supprimer toutes les modifications faites après le dernier commit.

public void close() : fermer la connexion et libérer les ressources JDBC.

La classe DriverManager

La classe DriverManager : cette classe joue le rôle d’intermediare entre l’utilisateur et le pilote(driver) utilisé(le chargement des pilotes). C’est via cette derniere qu’on peut établir une connexion entre une bd et le pilote approprié. Cette dernière maintient une liste des pilotes(drivers) qui sont enregistrés en appelant la méthode registerDriver.

4 méthodes sont appelées lors de l’utilisation de cette classe :

public static void registerDriver(Driver driver) : on l’utilise lorsqu’on veut enregistrer un driver.

public static void deregisterDriver(Driver driver) : pour désenregistrer un driver.

public static Connection getConnection(String url) : pour établir une connexion avec l’url spécifié.

public static Connection getConnection(String url,String userName,String password) : pour établir une connexion avec l’url spécifié, nom d’utilisateur et mot de passe.

Introduction sur le fichier POM de Maven

Introduction sur le fichier POM de Maven :

POM est un acronyme pour Project Object Model. Le fichier pom.xml contient des informations de projet et les informations de configuration pour maven afin de construire un projet respectant les normes comme les dépendances , construction des répertoire, le répertoire source, répertoire de test , plugins, objectifs, etc.

Maven lit le fichier pom.xml , puis exécute les objectifs à atteindre.

Avant maven 2 , il a été nommé en tant que fichier project.xml. Mais, depuis maven 2 (également en maven 3 ), il est renommé en tant pom.xml.

Éléments nécessaires du fichier maven pom.xml :

  • Project : c’est l’élément racine du fichier pom.xml.
  • modelVersion : Il doit être réglé sur 4.0.0.
  • groupId : Il spécifie l’id du groupe de projet.
  • artifactId : C’est le nom de votre projet.
  • version : C’est la version du projet.

 

Maven Repository

Maven Repository :

Maven repository est un répertoire de fichiers JAR emballés avec le fichier pom.xml. Il existe 3 types de repository maven :

  • Local Repository
  • Central Repository
  • Remote Repository

1)- Local Repository :

Local repository Maven est situé dans votre système local. Il est créé par maven lorsque vous exécutez une commande maven.
Vous pouvez changer l’emplacement du local repository en modifiant la balise <localRepository>(mettez le chemin ou vous voullez mettre le local repository, exemple : C:\Man\repo) qui existe dans le fichier settings.xml(vous le trouverez dans le répertoire conf, exemple : C:\Man\apache-maven-3.3.9-bin\apache-maven-3.3.9\conf).

2)- Central Repository :

Central Repository est situé sur le web. Il a été créé par la communauté apache maven.
Le chemin du référentiel central est : http://repo1.maven.org/maven2/

3) Maven Remote Repository :

Remote Repository est situé sur le web. La plupart des bibliothèques peuvent être manquantes à partir du central repository tel que JBoss, etc…, donc nous avons besoin de définir un référentiel distant dans le fichier pom.xml.

Installer Apache Maven sur Windows

Comment faire pour installer Maven sur Windows

Vous pouvez télécharger et installer Apache Maven sur Windows, Linux et MAC OS. Dans ce tuto, nous allons apprendre comment installer maven sur Windows.

Pour installer maven sur les fenêtres , vous devez effectuer les étapes suivantes :

  • Télécharger maven et l’extraire
  • Ajouter MAVEN_HOME dans la variable d’environnement
  • Ajouter le chemin maven dans la variable d’environnement
  • Vérifier que l’installation de maven est bien faite.

1)- Télécharger Maven :

Télécharger la dernière version de Maven en cliquant sur le lien suivant : Télécharger Maven

Par exemple : apache-maven-3.3.9-src.tar.gz

Décompressez . Maintenant, il va ressembler à ceci :

Maven_istall

2 ) Ajouter MAVEN_HOME dans la variable d’environnement :

Faites un clic droit sur ​​Poste de travail – > propriétés – > Paramètres système avancés – > Variables d’environnement – > cliquez sur Nouvelle…

Maintenant, ajoutez MAVEN_HOME dans le nom de la variable et le chemin de maven dans valeur de la variable :

Maven_home

3 ) Ajouter le chemin Maven dans la variable d’environnement :

Chercher la variable path et modifier la en ajoutant le chemin du dossier bin, par exemple : C:\Man\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin

Maven_path

4)- Vérifier l’installation :

Pour vérifier si Maven est bien installé sur votre machine, nous vous demandons de lancer la commande suivante sur cmd:

Si l’installation est bien faite, vous recevez le message suivant :

version_maven

Qu’est-ce que le framework spring

Qu’est-ce que le framework spring
Spring
est un framework très riche permettant de structurer, d’améliorer et de simplifier l’écriture d’application Java EE.
Spring est un framework libre, un conteneur dit « léger », c’est à dire une infrastructure similaire à un serveur d’application Java EE.

Architecture du framework Spring
Spring_Module

Avantages :
– Les applications Spring sont faiblement couplées grâce à l’injection de dépendance.
– Spring fournit des modèles pour JDBC, Hibernate, JPA, etc. Donc, il n’y a pas besoin d’écrire trop de code.
– Le test des applications est devenu plus facile en utilisant L’injection de dépendance.
– Spring est léger en raison de sa mise en œuvre POJO.
– Spring propose une très bonne intégration avec des frameworks open source(Struts, Jsf, Hibernate, etc…).

Inconvénients :
– les livrables peuvent avoir une taille importante à cause de nombreuses librairies requises par Spring et ses dépendances.

Cycle de vie d’une JSP

Un cycle de vie d’une JSP peut être définie comme l’ensemble du processus depuis sa création jusqu’à la destruction qui est similaire à un cycle de vie d’une servlet avec une étape supplémentaire qui est nécessaire pour compiler une JSP en servlet.

jsp_lifecycle

Une Page Jsp passe par les étapes suivantes :

  • Compilation : Lorsqu’un navigateur demande une page JSP, le moteur JSP vérifie d’abord pour voir s’il a besoin de compiler la page. Si la page n’a jamais été compilée, ou si la JSP a été modifié depuis la dernière compilation, le moteur JSP compile la page.
  • Initialisation : Quand un conteneur charge une JSP, il invoque la méthode jspInit () avant d’intervenir sur toutes les demandes.
  • Exécution : Chaque fois qu’un navigateur demande une JSP et la page a été chargée et initialisée, le moteur JSP appelle la méthode _jspService () dans la JSP, la méthode _jspService () est invoquée une fois par une demande et responsable de la génération de la réponse à cette demande et elle est également responsable de générer des réponses à toutes les autres méthodes HTTP.
  •  Nettoyage : La méthode jspDestroy () est l’équivalente de la méthode destroy() pour les servlets. Charger jspDestroy lorsque vous devez effectuer un nettoyage, comme la libération des connexions de base de données ou la fermeture des fichiers ouverts.