Printemps

Optimisation de l'annotation @SpringBootTest (feat. @DataJpaTest, @WebMvcTest)

Lorsque j’ai commencé mon travail, le temps de test était très long, ce qui me préoccupait. (environ 28 minutes) En passant, même si mes collègues ne trouvaient pas cela particulièrement long — ils étaient habitués à ce timing — dans mon ancienne entreprise, les tests ne prenaient que 2 à 3 minutes. Il était donc très difficile de supporter une attente aussi longue 🤣 À l’époque, nous n’utilisions pas d’outils pour lancer des conteneurs comme Testcontainers, et nos tests n’étaient composés que de tests unitaires basés sur Mockito. Je ne comprenais pas pourquoi ces tests prenaient autant de temps.

Lire plus →

20 janvier 2025

Application de Redis Cache dans Spring Boot

Bien qu’un peu en retard, j’ai eu l’occasion de faire un test de charge API en utilisant un outil appelé Locust. Je souhaite partager mon expérience d’application de Redis Cache pour résoudre le retard de réponse de certaines API qui est survenu à ce moment-là. Qu’est-ce qu’un Cache ? Un cache est une zone mémoire qui permet d’accéder rapidement à des données ou valeurs copiées à l’avance.

Lire plus →

19 janvier 2025

Testons QueryDSL avec Testcontainer dans Spring

Lorsqu’on utilise QueryDSL dans des projets réels, il peut être difficile de savoir si la requête fonctionne correctement. Dans ces cas-là, en utilisant Testcontainer, on peut soulever une base de données dans un environnement containerisé identique à l’environnement réel, exécuter la requête, et comparer les résultats pour réaliser un test. Pourquoi tester QueryDSL ? En réalité, exécuter des requêtes en accédant à une base de données est possible non seulement avec QueryDSL, mais aussi avec des frameworks ORM variés comme JPA, MyBatis, etc.

Lire plus →

19 août 2024

Découvrir la différence entre les annotations @Configuration et @Component dans Spring

Il existe principalement deux façons de déclarer les dépendances (également appelées classes Bean) dans Spring : @Configuration et @Component, comme expliqué ci-dessous. Un Bean est un objet géré par le conteneur Spring IoC, comme expliqué dans un article précédent. Et @Configuration et @Component sont les moyens de déclarer ces Beans. Voyons la différence entre les deux. Utilisation de @Component @Component est l’une des méthodes pour enregistrer des Beans dans le conteneur Spring IoC.

Lire plus →

9 juillet 2024

Utiliser Micrometer dans Spring pour journaliser avec Trace ID et Span ID

Lorsque vous effectuez un journalisation pour le débogage, en particulier dans les systèmes distribués, il peut être difficile de comprendre le flux des transactions grâce au journal. En particulier dans les environnements de production, il est courant de consigner les paramètres des demandes normales ou les informations de retour à différents niveaux pour le débogage. Mais la caractéristique de ces journaux est qu’ils peuvent être mélangés si plusieurs requêtes arrivent en même temps, rendant difficile de déterminer à quelle requête appartient un journal spécifique.

Lire plus →

24 juin 2024

Affichage des journaux Pattern et JSON avec Logback dans Spring Boot

Lorsque vous gérez un serveur API, il est courant de laisser des journaux pour le suivi des opérations ou le débogage. Traditionnellement, dans Spring, même si un format existe pour laisser des logs, ils sont souvent laissés sous forme de texte brut. Personnellement, je pense que cela offre une meilleure visibilité que de laisser des logs au format JSON. Cependant, rechercher et filtrer des journaux est une autre histoire. Dans des plateformes comme AWS CloudWatch qui permettent de rechercher des logs, enregistrer des logs sous forme de texte brut rend difficile le filtrage pour savoir quelle fonction a produit quelles données.

Lire plus →

17 juin 2024

(JAVA) Mocking de méthodes statiques dans un service avec Spring

Généralement, Spring suit une architecture en couches dans laquelle la logique métier est principalement traitée dans le service. Dans ce contexte, il arrive souvent d’utiliser des méthodes static. Pour les composants ordinaires, ceux-ci sont dynamiquement liés au moment de l’exécution, ce qui permet de remplacer l’objet qui implémente l’interface par un objet Mock lors du test. Cependant, les méthodes static sont liées statiquement au moment de la compilation, rendant leur Mocking plus difficile.

Lire plus →

15 juin 2024

(JAVA) Mocking des méthodes dans le même service Spring

Généralement, Spring suit une architecture en couches, où le service gère principalement la logique métier. Plus il y a de code dans le service, plus il y a de chances qu’il y ait du code similaire. Dans certains cas, on peut choisir d’ajouter une couche séparée pour gérer la logique commune, mais souvent, on déclare et traite ces méthodes communes au sein du même service. Par exemple, considérons le code suivant :

Lire plus →

30 mai 2024

Comprenons l'injection de dépendances (Dependency Injection, DI)

Dans cet article, nous allons aborder l’injection de dépendances (Dependency Injection : DI), l’un des concepts importants du Spring Framework. DI est l’un des concepts très importants de Spring et c’est aussi un sujet fréquent lors des entretiens d’embauche, il est donc bon de le connaître. Commençons par comprendre la notion de dépendance. Dépendance Lorsqu’on dit que l’objet A dépend de l’objet B, cela est étroitement lié à une relation de composition.

Lire plus →

24 février 2022

Découvrons l'annotation Autowired

La dernière fois, nous avons exploré le DI de Spring, n’est-ce pas ? Aller voir l’article sur “l’injection de dépendance” Aujourd’hui, nous allons découvrir l’annotation @Autowired qui est étroitement liée au DI. Tout d’abord, que ce soit un nom de méthode ou d’annotation, cela revêt un sens très important. Autowired ? Quelle impression est-ce que ça vous donne ? Quelque chose comme “connecté automatiquement”, non ? Je ne sais pas exactement ce que c’est, mais voyons cela ensemble.

Lire plus →

24 février 2022

Explorons les Spring Bean

Aujourd’hui, j’avais l’intention d’expliquer Spring MVC, mais avant cela, je vais d’abord vous présenter les connaissances de base que vous devez connaître pour comprendre MVC avec Spring. Qu’est-ce qu’un Spring Bean ? Un Spring Bean est un objet géré par le Spring Container. Mais c’est étrange. Un objet géré par Spring ? Est-ce un objet défini dans la bibliothèque de Spring ? La réponse est non. Bien qu’il puisse y avoir des objets définis comme Bean dans la bibliothèque, les objets que l’utilisateur écrit mais qui sont gérés par Spring sont ceux que nous définissons comme Bean. Initialement, l’utilisateur devait gérer les objets, mais lorsque le framework les gère, nous appelons cela une inversion de contrôle, IOC.

Lire plus →

24 février 2022