Générez votre changelog automatiquement avec git

Votre changelog reprend les fonctionnalités que vous avez réalisé entre deux versions, ça tombe bien, votre historique git contient ces informations 🙂 On va voir comment les extraire de git pour générer automatiquement un changelog exhaustif et fiable. Le principe Pour faciliter la maintenance de votre projet, il est d’usage d’avoir des commits parlants afin que tous les développeurs puissent […]

Git – Permuter entre différents compte efficacement

Contexte Je suis développeur au quotidien et j’aime développer en dehors du travail également. Parfois, il peut m’arriver de faire un kata entre midi et deux par exemple. J’aime bien du coup garder une trace de mon exercice ou si je n’ai pas le temps pour le continuer plus tard. Pour ça, j’utilise Git avec un dépôt distant. Rien de […]

Retirer un fichier d’un commit déjà push

On va prendre un cas concret: j’ai fait un commit et en relisant ma merge request, je me rend compte que certains fichiers ne devraient pas y être: Dans mon cas c’est le fichier src/test/java/com/globaldashboard/unit/dependencies/domain/PomUrlTest.java L’idée va être de défaire le commit en local et de le refaire: output de git log ⚠️ Avant de commercer, n’hésitez pas à faire […]

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

Installer Maven sur Ubuntu

Prérequis Il faut que vous ayez déjà installé un JDK. Exécutez la commande:  Si vous avez bien un output de ce type avec cette commande, vous pouvez continuer. Dans le cas contraire, il faudra installer un JDK. Installation de Maven Aller sur la page https://dlcdn.apache.org/maven/maven-3/ Sélectionnez le dossier correspondant à la version que vous voulez installer puis allez dans le […]

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

Mettre en place un ADR (architecture decision record)

Introduction 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

Introduction 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 

Introduction 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

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