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 […]
Mettre en place un ADR (architecture decision record)
devIntroduction Sur un des projets sur lesquels j’interviens, diverses personnes ont contribué au cours des années parfois sans passation entre les équipes. En regardant les commits, on voit qu’une équipe a mis un ORM, une autre l’a enlevé, une autre a mis un autre ORM etc.. Le coût en temps pour l’entreprise est considérable car ce n’est pas une opération […]
Corriger une fuite mémoire à l’aide du Profiler IntelliJ
dev javaIntroduction Vous avez diagnostiqué une fuite mémoire et vous voulez corriger le problème. Si vous utilisez IntelliJ, vous avez à disposition dans votre IDE un outil puissant qui vous permettra de diagnostiquer la source du problème et vérifier votre correction : le profiler. On va voir à travers un exemple concret comment il peut nous aider. La fuite mémoire Je […]
Générer un coverage prenant en compte les tests unitaires et d’intégration dans un même rapport avec JaCoCo
dev javaIntroduction JaCoCo est un outil très connu dans le monde Java qui permet de générer des rapports de code coverage au format xml et html. L’intérêt sera souvent de donner le rapport au format xml à d’autres outils (Codecov ou Sonar par exemple) pour suivre le code coverage de votre projet. Nous allons voir pas à pas comment configurer Jacoco […]
Introduction aux Beans Spring
java springIntroduction 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
dev javaIntroduction 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)
dev javaIl 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
dev java springIntroduction 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
java springIntroduction 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
java springIntroduction 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 […]
Commentaires récents