TEK-UP ING-4
Spring boot
Atelier 3
Objectifs
Créez des beans avec l’injection de dépendances.
Utilisez le conteneur Spring IoC.
Introduction:
Dans le domaine de développement des systèmes informatiques, il y a trois aspects d’une mauvaise
conception :
Rigidité : difficile à changer en raison de l'impact sur toutes les autres parties du système.
Fragilité : les changements brisent d'autres parties du système.
Immobilité : la réutilisation ailleurs est difficile en raison de l'enchevêtrement entre les
composants du système
L’inversion de contrôle résout ces trois problèmes en utilisant une approche simple : « Dépendre des
abstractions, pas des implémentations ».
Dans le monde de Java, cela signifie s'appuyer sur des interfaces et non sur des implémentations.
Travail à faire :
Soit le code des POJO’s suivants :
public class MyRunner{
public static void main(String[] args) {
new ComputerProcessor()
.addComputer(new Doubler())
.addComputer(new Squarer())
.computeAll(8);
}
}
public class ComputerProcessor {
private List <Object> computers = new ArrayList <Object> ();
public ComputerProcessor addComputer(Object o) {
[Link](o);
return [Link];
}
public void computeAll(long value) {
for (Object o : computers) {
long computedValue = -1;
if (o instanceof Doubler) {
computedValue = ((Doubler) o).computeDouble(value);
} else if (o instanceof Squarer) {
computedValue = ((Squarer) o).computeSquare(value);
}
©MAD Page 1 sur 2
TEK-UP ING-4
String name = [Link]().getSimpleName();
[Link]("Computer: " + name + ", value: " + value
+ " computed value: " + computedValue);
}
}
}
public class Doubler {
public long computeDouble(long value) {
return value*2;
}
}
public class Squarer {
public long computeSquare(long value) {
return value*value;
}
}
Exemple de résultat :
1- Déterminez le rôle de chaque classe.
2- Proposez une application Spring Boot pour ce code.
NB : les classes MyRunner et ComputerProcessor sont des services et Doubler et
Squarer sont des classes modèles
3- Ajoutez une nouvelle classe Cuber, disposant d’une méthode de calcul de cube d’une valeur
donnée.
Exemple de résultat :
4- Quelles classes vous avez modifié ? Critiquer la conception de cette application ?
5- Proposer une nouvelle conception et implémentation pour cette application en se basant
sur le principe de l’inversion de contrôle.
Bon Travail
©MAD Page 2 sur 2