Introduction aux Beans Spring

Introduction Dans nos applications, il y a souvent des objets qui dépendent les uns des autres (un Service avec des Repository par exemple). Si on devait satisfaire ces dépendances “à la main”, on devrait les instancier, vérifier que ça n’ait pas d’impact sur d’autres objets etc… A l’échelle d’un projet, la gestion de ces dépendances de façon manuelle est fastidieuse […]

Chiffrer et déchiffrer en Java avec Cipher

Introduction Chiffrer et déchiffrer des informations est un besoin qu’on rencontre souvent dans nos projets et Java donne nativement une palette d’outils pour y arriver. On va voir dans cet article comment réaliser ces deux opérations via un cas pratique. L’exemple sera très simple, j’ai un mot de passe, je le chiffre en AES puis je le déchiffre.  I. Chiffrer […]

Quelle est la version minimale de Maven pour une version donnée de Java ? Notre tableau récapitulatif (Mise à jour 2023)

Il n’est pas évident de savoir quelle est la version de maven minimale conseillée pour une version de Java car la documentation maven de le précise pas. On sait quelle est la version minimale de JDK pour chaque version « Maven 3.8+ requires JDK 1.7 or above to execute. » mais pas la version maximale. C’est pour cette raison que je vous […]

Spring JDBCTemplate – Mapper des lignes vers des objets 

Introduction Avec Spring JDBCTemplate, on peut récupérer des résultats d’une requête SQL sous forme d’une liste d’objets à la manière d’un ORM. On peut notamment utiliser BeanPropertyRowMapper, une implémentation de RowMapper fournie par Spring permettant de mapper automatiquement les lignes retournées vers nos entités. On va voir dans cet article quelques exemples d’utilisation sur des cas concrets 🙂 I. BeanPropertyRowMapper  […]

Gérer les CORS dans votre application Spring

Introduction Par défaut, il n’est pas autorisé de faire des requêtes entre une application qui est dans un domaine A vers une autre qui serait dans un domaine B (pour des raisons de sécurité, il y a plus de détails dans les sources). Si vous avez un front qui tourne sur un serveur node (localhost:3000) et votre backend Spring sur […]

Gérer les codes retours de son API Spring de façon centralisée avec @ControllerAdvice ou @RestControllerAdvice

Introduction Si vous travaillez sur une API Spring au quotidien, vous pouvez trouver rébarbatif le fait de renseigner tous les codes HTTP correspondants aux différents cas d’erreur. On peut les gérer cette façon: Si on veut plusieurs codes retours en fonction des différentes exceptions possibles alors on peut se retrouver avec beaucoup de catch dans nos contrôleur.  La promesse de […]

Changer la bannière de démarrage “Spring” dans votre projet Spring Boot

Introduction Vous l’avez sûrement remarqué, lorsque vous lancez votre application Spring Boot, vous avez une bannière de ce type qui s’affiche: Il peut être intéressant de la changer, ne serait-ce que pour voir plus facilement dans les logs quelle application démarre. On peut aussi vouloir afficher certaines informations utiles comme la version de l’application qui se lance. On va voir […]

Les Stream: map – filter – reduce par l’exemple

 Introduction Les fonctions map, filter, reduce sont des opérations très utiles sur les Streams qui permettent de transformer simplement leurs éléments. L’objectif de cet article est de vous montrer comment fonctionnent ces 3 opérations fondamentales. On ne rentrera pas dans les détails mais on utilisera des exemples concrets pour que vous puissiez comprendre leur principe et les appliquer dans des […]

Configurer Cucumber avec Spring Boot 3 et Junit 5 – Un exemple concret

Introduction Cucumber est un outil indispensable dans mon quotidien. En effet, il permet très facilement de créer des tests systèmes (cf. https://latavernedutesteur.fr/2017/11/03/les-niveaux-de-test/).  Le seul problème de Cucumber  (à mon sens) est qu’il n’est pas évident à configurer.  Après l’avoir mis en place sur plusieurs projets, je vous propose de prendre un raccourci et voir pas-à-pas comment l’installer simplement sur votre […]

Des tests unitaires paramétrés avec Junit Jupiter Params

Introduction Lorsqu’on écrit nos tests unitaires, on peut avoir l’impression que certains cas de tests sont quasiment identiques dans leur structure. Ils sont rébarbatifs à lire/écrire. C’est là que la notion de dataProvider est utile: on va réutiliser le même test mais avec des paramètres d’entrée différents 😉 Si on prend le cas du Kata Tennis (https://codingdojo.org/kata/Tennis/) , on a […]