0% ont trouvé ce document utile (0 vote)
51 vues32 pages

IOC DI Avec Spring

Transféré par

Rihab IDOUDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
51 vues32 pages

IOC DI Avec Spring

Transféré par

Rihab IDOUDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Injection de

dépendance
s
avec Spring
Auteur : Walid YAICH Dernière mise à jour : 06 Sep 2017

1
Objectifs
▰ Installer l’environnement de développement.
▰ Comprendre l'intérêt du logging et comment le
mettre en place.
▰ Construire un projet Spring en utilisant Maven
▰ Configurer l’injection de dépendances par XML.
▰ Configurer l’injection de dépendances par Java.
▰ Configurer l’injection de dépendances par
annotations. walid.yaich@espr
it.tn
2
Plan
▰ Eclipse / Spring tool Suite ▰ Lancer des commandes
▰ SonarLint Maven depuis
▰ Diagramme de classe Eclipse/STS
▰ Structure du projet ▰ Exercice
▰ Maven - pom.xml ▰ Configuration par Java
▰ Logging ▰ Configuration par
▰ Configuration par XML annotation
▰ Exécution d’une ▰ Quote
application Spring en ▰ Stereotype Annotations
utilisant Maven ▰ Bean Scope
walid.yaich@espr
3
it.tn
Eclipse / Spring tool Suite

Spring Tool Suite™


est un eclipse
personnalisé pour le
développement
d’application Spring

Fonctionnalités :
https://spring.io/tools/sts

walid.yaich@espr
4
it.tn
SonarLint
SonarLint est un plugin
Eclipse qui permet à
chaud de :

1) Détecter les
mauvaises
pratiques de
Comment installer le plugin codage.

2) Proposer des
solutions.

http://www.sonarlint.org/
walid.yaich@espri 5
Sources and JavaDoc

Pour visualiser les sources


et JavaDoc des différents
jars utilisés :

Window -> preferences

walid.yaich@espri 6
Télécharger un projet Maven
de git

7
Diagramme de classe

walid.yaich@espr
8
it.tn
Structure du
projet

walid.yaich@espr
9
it.tn
Maven - pom.xml
Identifiant unique

Livrable :

C’est la définition du projet, ces


informations vont apparaître dans
le site généré par la commande :

mvn site

walid.yaich@espr
it.tn 10
Maven - pom.xml -
dépendances

Les dépendances Spring

Les dépendances de Logback

walid.yaich@espr
11
it.tn
Maven - pom.xml - Plugins

Ce plugin nous permet d’exécuter


un programme java avec la
commande Maven :
Ce plugin nous permet de générer un jar
mvn exec:java exécutable avec la commande :

mvn package

walid.yaich@espr
it.tn
12
Logging
Le logging est une activité technique utile et nécessaire dans une application pour :
● Obtenir des traces d'exécution (démarrage/arrêt, informations, avertissements, erreurs d'exécution, …)
● Faciliter la recherche d'une source d'anomalie (stacktrace, ...)
● Comprendre et/ou vérifier le flux des traitements exécutés.
● ...

Il est fortement recommandé d'utiliser une API de logging plutôt que


d'utiliser la méthode System.out.println() pour plusieurs raisons :
● Activer/déactiver les logs a tout moment.
● Changer le niveau de logs Debug, INFO, ERROR …
● Configurer la rotation et le purge.
● Avoir des informations détaillées tel que la date.
● Améliorer la performance de l’application ( Asynchronous Loggers).
walid.yaich@espr
13
it.tn
Utilisation de Logback
Logback est une bibliothèque de logging qui permet de tracer l'exécution du code en écrivant sur la sortie
(principalement la console et un fichier de log).

walid.yaich@espr
14
it.tn
Configuration de
Logback

walid.yaich@espr
15
it.tn
Lire les logs

Date Niveau package Classe Méthode Ligne Message

walid.yaich@espr
16
it.tn
Les niveaux de log

logger.trace(“message”)

Trace Pour tracer en détails l’exécution, c’est le niveau le plus fin.

Debug Pour écrire des détails de bas niveaux pour des raisons de DEBUG

Info Pour écrire ce que le système est en train de faire

Warn Pour écrire les problèmes(avertissements) qui n'empêche pas le système de continuer de fonctionner

Error Pour écrire les erreurs critiques

walid.yaich@espr
17
it.tn
Injection de dépendances
avec Spring

Documentation officielle :
The interface ApplicationContext
represents the Spring IoC container
and is responsible for instantiating,
configuring, and assembling the
aforementioned beans. ● XML
● Java
Aforementioned = previously mentioned ● Annotations

walid.yaich@espr
18
it.tn
Configuration
par XML

Injection par setter

walid.yaich@espr
19
it.tn
Exécution d’une application Spring en
utilisant Maven
Class

Path vers le fichier de conf xml

Cast ID du bean

niveau

1)Aller dans dossier qui contient pom.xml


2)Lancer cette commande maven : mvn clean compile exec:java (la classe main est spécifié dans le pom.xml)

walid.yaich@espr
20
it.tn
Lancer des commandes Maven depuis
Eclipse/STS

walid.yaich@espr
21
it.tn
A vos Clavier !
1. Installer le jdk, STS et SonarLint
2. Importer le projet DependencyInjection_TODO :
https://gitlab.com/Walid-YAICH/DependencyInjection_TODO.git
3. Compléter le code manquant (TODO) dans les différents fichiers.
4. Qu’est ce qu’on devrait voir sur la console si on bascule vers l’implémentation du service SOAP ?
5. Basculer vers l’implémentation SOAP et vérifier les messages sur la console.
6. Changer la configuration du logger Error puis Trace et vérifier l’output sur la console.

Output :

walid.yaich@espr 22
Configuration
par Java

Bean ID

Injection de
dépendances
par setter

walid.yaich@espr
23
it.tn
Configuration
par Java

Préciser la classe de configuration

walid.yaich@espr
24
it.tn
Configuration
par
annotation

Injection de
dépendances

@Component déclare la classe comme Bean dont l’ID sera implicitement le nom
de la classe mais qui commence par miniscule.
walid.yaich@espr
25
it.tn
Configuration
par
annotation
Les packages qui
vont être scannés

Pour préciser la classe


de configuration

walid.yaich@espr
26
it.tn
Avantages et inconvénients de chaque type
de configuration
Java Annotation XML

- Conf centralisée dans un seul - Bien pour un développement


endroit. rapide.
Avantages - Typage fort. - La classe contient déjà sa
configuration

Legacy
- Par rapport au annotation, un - Configuration éparpillée.
code de configuration - Conf et code dans un même
Inconvéniants supplémentaire à écrire. endroit.

C’est possible de mélanger les différents types de


configuration !
walid.yaich@espr
27
it.tn
Spring framework stereotype annotations
Une classe annotée
@component est un Bean

walid.yaich@espr
28
it.tn
Bean Scope
● Singleton : A single instance is used (default).

● prototype : A new instance is created each time the bean is


referenced (getBean or Dependency injection).

● Session : A new instance is created once per user session - web


environment.

● request : A new instance is created once per request - web


environment.

walid.yaich@espr
29
it.tn
Correction sur git
https://gitlab.com/Walid-YAICH/DI_Spring.git

30
Quote of the Day

“Any fool can write code


“ that a computer can
understand. Good
programmers write code
that humans can
understand.”
Martin Fowler walid.yaich@espr
it.tn
31
Merci !
walid.yaich@espr
32
it.tn

Vous aimerez peut-être aussi