Chap : introduction a spring boot
Note:
➢ @Autowired permet d’instantier un objet garder dans le conteneur.
➢ @Component pour creer une instance de la classe et la garder dans un
conteneur.
➢ L’injection de dependance est un principe qui permet d’instancier les
objets en utilisant le conteneur de spring via les annotation ou le ficher
xml.
➢ L’inversion de contrôle c’est lorsque le framework prend en charge
l’app.
Chap : les differents dependence dans un projet spring boot
➢ Spring Web (spring-boot-starter-web) : Permet de créer des applications
web, notamment des API REST.
➢ Spring Data JPA (spring-boot-starter-data-jpa) : Facilite l'accès aux bases
de données relationnelles en utilisant JPA (Java Persistence API).
➢ Spring Security (spring-boot-starter-security) : Ajoute une couche de
sécurité à votre application, comme l'authentification et l'autorisation.
➢ Spring Actuator (spring-boot-starter-actuator) : Ajoute des endpoints de
monitoring et de gestion de votre application.
➢ SQL Driver permet la communication avec une base de données SQL.
➢ Lombok est une bibliothèque Java qui simplifie le code en générant
automatiquement des méthodes répétitives comme les getters, setters,
constructeurs, et bien plus encore. Il utilise des annotations pour cela, ce
qui rend ton code plus propre et plus lisible
➢ Spring Boot DevTools est un module qui améliore l'expérience de
développement en fournissant des fonctionnalités pratiques comme :
• Rechargement en temps réel : Les modifications dans les ressources
statiques (comme les fichiers HTML, CSS, JS) sont appliquées sans
redémarrage complet.
• Redémarrage automatique : Lorsque tu modifies du code,
l'application redémarre automatiquement sans avoir à le faire
manuellement.
➢ Spring Mail (spring-boot-starter-mail) : Permet d'envoyer des e-mails
depuis votre application.
Chap : configuration de l’environnement spring boot
Configuration du [Link] :
Chap : les differentes annotations en spring boot
➢ Pour le controller :
• @RestController :
Cette annotation est utilisée dans le cadre de Spring Framework pour indiquer
que la classe est un contrôleur REST. Elle combine les fonctionnalités de
@Controller et @ResponseBody (Cela signifie que les méthodes de cette classe
retournent directement des données (généralement au format JSON ou XML)
plutôt que de renvoyer une vue HTML. C'est idéal pour créer des API web)
• @CrossOrigin("*") :
Cette annotation permet de gérer les requêtes cross-origin (CORS) pour le
contrôleur ou une méthode spécifique. En spécifiant"*", vous autorisez les
requêtes provenant de n'importe quelle origine (domaine). C'est utile pour
permettre à des applications front-end hébergées sur des domaines différents
d'accéder à votre API. Cependant, il est recommandé de limiter cette autorisation
à des domaines spécifiques pour des raisons de sécurité.
• @RequestMapping("/api") :
Cette annotation est utilisée pour mapper les requêtes HTTP à des méthodes
spécifiques dans le contrôleur. Ici, elle définit que toutes les méthodes de ce
contrôleur seront accessibles sous le préfixe d'URL /api. Par exemple, si vous avez
une méthode annotée avec @GetMapping("/users"), elle sera accessible via
l'URL/api/users
Exemple :
➢ Pour les DTO :
• @Data (Lombok) : Génère automatiquement les getters,
setters, toString(), equals()(Déterminer si deux objets sont "égaux"
selon votre définition métier) et hashCode()(Générer un code
numérique unique pour un objet, utilisé par les collections
comme HashMap, HashSet).
• @NoArgsConstructor (Lombok) : Crée un constructeur sans paramètres.
• @AllArgsConstructor (Lombok) : Crée un constructeur avec tous les
paramètres
• @Builder (Lombok): Implémente le pattern Builder pour créer des objets
de façon lisible
Exemple :
➢ Pour les entites :
➢ Pour les repository :
➢ Pour les services(interfaces) :
➢ Pour les services(implementation) :
Chap : les relations entre les classes en spring boot
➢ One-to-one : User et UserProfile
➢ One-to-Many/Many-to-One :
• mappedBy = ‘reservation’ : veut dire que c’est la clé primaire des
réservations qui migre vers celle des paiement.
• PERSIST : permet de dire que lorsque je crait une reservation je crait
aussi son paiement.
• MERGE : permet de dire que lorsque je modifie une reservation je
modifie aussi son paiement.
• LAZY : permet de dire que lorsque je charge une reservation je ne charge
pas ses payement.
• EAGER : c’est l’inverse de lazy
➢ La composition : la composition en spring boot est representer par les
annotations : @Embeddable et @Embedded
➢ L’heritage :
• Creation d’une seule table unique qui contient tout les attributs
N.B : le @DiscriminatorValue permet de definir a quel table les attributs
appartiennent (elle mettent une valeur lorsque l’attribut appartient a la classe
et mettent Null dans la cas contraire)
• Creation des classes filles uniquement :
• La tables parents et les tables enfant sont créer :
N.B : le @PrimaryKeyJoinColumn(name = "paiement_id") permet de liee la cle
primaire de la table parents a celle des tables enfants de ce fait les cle primaire
des enfant dependent du parent. Exemple :
Chap : la gestion des erreurs avec spring boot
Elle se fait par 03 etape :
➢ 1er etape : Créer un record(Un Record est une façon ultra-simple de
créer des classes qui contiennent juste des données, sans écrire pleins
de méthodes. Elle crait automatiquement le constructeur, les getters,
setters, toString(), equals(), hashCode()) ErrorEntity dans la couche
DTOqui va permettre de definir comment sera afficher le message
d’erreur
➢ 2eme etape : créer un controllerAdvice dans la couche controller qui va
permettre de gerer les erreurs :
Autre Exemple :
➢ 3eme etape : definir le code qui va declencler l’exception :
Chap : les requetes personaliser avec spring boot
Les requetes personnaliser en spring boot avec spring data jpa s’appele les
querry method. Ils peuvent se faire de 02 facons :
➢ Avec les methodes de recherches. Les differentes facon de l’utiliser sont
les suivantes :
• Methodes de recherche de bases
• Operations logique :
• Operateur de comparaison:
• Recherche de textes:
• Trier les resultats:
• Relations entre classe:
• Booleen et null:
• Requete @Querry personnaliser:
Chap : Validation avec spring boot
➢ La validation en spring boot se fait avec la dependence Validation. Elle
peut se faire sur les classes, les attribus, les parametres de methodes/
de constructeur etc…
➢ Quelques exemple sur la validation d’attribut :
• Validation simple
N.B : ce qu’il faut savoir sur les regex
N.B :
• pour la gestion d’erreur au niveau du controlerAdise sa se passe
comme suites :
• au niveau du controller il faut ajouter @Valid pour pouvoir verifier
si les champs son valide(renvoyer l’erreur sinon) avant d’executer
le code :
Chap : Les tests avec spring boot
Spring boot possede deja une dependence appele Junit et Mock pour effectuer
des test unitaires. Pour effectuer des test avec Junit on créer un fichier java
dans le repertoire de Test. Puis on utilise les annotations @SPringTest et @Test
comme suite :
➢ Test de repository
➢ Test de Service :
Chap : Actuator
➢ Un endoints dans Spring Boot est une URL exposée par votre application
qui fournit des informations sur son état interne, sa santé, ses métriques
et autres données opérationnelles.
Les principaux endpoints sont :