La différence de politique de proxification des Beans entre Spring et Spring Boot

Dans une application Spring, sauf exceptions, les Beans sont proxifiés. En d’autres mots, on n’interagit pas directement avec eux et ce mécanisme est à la base de l’AOP. Beaucoup de mécanismes s’appuient sur l’AOP (les Transactions par exemple) et connaître la façon dont sont proxifiés les beans est important pour prédire et comprendre certains comportements. La documentation Spring est très […]

Le Rollback des transactions Spring – Comprendre et modifier le comportement par défaut

Introduction Il est très commun d’utiliser les transactions Spring dans nos projets, il est donc important de savoir quand celles-ci altéreront notre base de données. On va voir via des exemples ce qui déclenche un rollback et comment customiser ce comportement. On va prendre en compte dans cet article les méthodes qui sont transactionnelles via l’annotation  @Transactional uniquement (et pas […]

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 […]

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 […]

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 […]