Les services
Comme nous l'avons vu dans l'introduction, le framework Spring utilise massivement le principe d'injection de dépendances.
Injection de dépendance
L'injection de dépendances consiste à une classe instanciée par le framework (comme par exemple nos controlleur), de se faire fournir les classes dont il dépend par un partie du framework qui s'appelle le conteneur d'injection de dépendance (aussi appelée conteneur d'inversion de controle). Cela peremet donc de découpler intégralement une classe de ses dépendances grâce à la programmation par interface.
Component Scan
L'injection de dépendance dans Spring Boot utilise un mécanisme appelé le Component Scan, qui permet au conteneur d'injection de dépendance de détecter automatiquement les classes à injecter grâce à des annotation. La principale est l'annotation @Component
mais elle possède des alias sémantique (ils font la même chose mais permettent de donner plus de sens) comme par exemple @Service
et @Repository
. Nous allons donc principalement utiliser @Service
(et aussi @Repository
mais nous verrons cela plus tard).
Pourquoi les services ?
Le but des services est de séparer la logique propre à l'application de la logique HTTP (qui réside dans les controleurs), les controleurs ne doivent avoir pour responsabilité que de gérer des requêtes et réponses HTTP. Pour tout traitement logique, nous allons utiliser un service, qui va prendre en entrée les