Skip to content
Yassir Halaoui

Compétence

Java et Spring Boot, de Java 8 à Java 21

Java est le langage dans lequel je livre du code en production depuis 2017, dans deux banques, un groupe de paiement et une plateforme d’assurance. Aujourd’hui, c’est Java 21 et Spring Boot 3.5.

En bref

Yassir Halaoui est développeur Java senior. Il travaille avec Java 8 à 21 et Spring Boot jusqu’à la 3.5, dont Spring Batch, Spring Data JPA, Spring AOP et Hibernate. Il a construit des services Java de zéro dans la banque et le paiement, migré des batchs sur Spring Boot et conçu des traitements asynchrones idempotents pour des flux de cartes de paiement.

Où je l'ai utilisée

  1. Pluxee · depuis 2025

    Création de zéro d’un service Java 21 et Spring Boot 3.5 qui sécurise la récupération du code PIN entre un processeur de cartes et une application mobile, avec un traitement asynchrone idempotent piloté par webhooks et une piste d’audit générique construite sur Spring AOP.

  2. Docaposte · 2024 à 2025

    Conception et développement des fonctionnalités d’un relevé électronique échangé entre assureurs, sur Spring Boot 3 et Java 21, et prise en charge des incidents et de la performance en production.

  3. Société Générale · 2022 à 2024

    En tant que lead developer, création de zéro d’une plateforme de déclaration d’honoraires pour une administration publique, en Java 11, Spring Boot et Spring Batch, et accompagnement de deux développeurs juniors.

  4. Conseil · 2022

    Migration de batchs historiques vers Spring Boot pour une plateforme de location automobile, et remplacement du JDBC écrit à la main par Spring Data JPA.

  5. CIH Bank · 2017 à 2022

    Développement du batch qui exécute automatiquement les virements permanents, et d’une API de dépôt d’espèces aux distributeurs en Spring Boot, derrière une API gateway sécurisée.

Tout ce que couvre ce domaine

Java
  • Java 8
  • Java 11
  • Java 17
  • Java 21
Spring
  • Spring Boot 3.5
  • Spring Batch
  • Spring Data JPA
  • Spring AOP
  • Spring Security
  • Spring Web Services
Persistance et API
  • Hibernate
  • Flyway
  • OpenAPI / Swagger
  • REST
  • Microservices
Tests
  • JUnit
  • Mockito
  • Spring Boot Test
  • Testcontainers
  • TDD
Build
  • Maven
Autres backends
  • Python
  • FastAPI
  • Node.js

En profondeur

De Java 8 à 21, et les migrations entre les deux

J’ai travaillé sur toutes les versions LTS de 8 à 21, ce qui veut surtout dire que j’ai fait les montées de version. Le plus dur dans une migration Java est rarement le langage. Ce sont les bibliothèques passées de javax à jakarta, JAXB sorti du JDK, et le batch que personne n’a lancé en local depuis des années.

Spring Batch a encore toute sa place

Tout n’est pas un flux. La clôture de fin de mois, l’intégration de fichiers et le rapprochement ont un début, une fin et une question qu’on pose le lendemain matin : est-ce que c’est terminé ? Spring Batch y répond avec des chunks redémarrables et une identité de run, et je préfère l’utiliser que le reconstruire au-dessus de Kafka.

Testé sur une vraie infrastructure

Les bugs qui font mal dans un système de paiement vivent dans les transactions, les contraintes d’unicité et la concurrence, et un repository mocké n’en voit aucun. Mes tests d’intégration tournent sur un vrai PostgreSQL dans Testcontainers, y compris un test qui envoie le même message depuis huit threads à la fois.

Questions

Êtes-vous disponible comme développeur Java Spring Boot senior ?

Pour des missions à Paris et en Île-de-France, sur site ou en télétravail partout en France. Envoyez les dates et la stack, je réponds dans la journée.

Pouvez-vous migrer une application de Java 8 ou 11 vers Java 21 ?

Oui. J’ai travaillé sur toutes les LTS de 8 à 21. Un plan de migration commence par les dépendances qui ont changé d’espace de noms ou quitté le JDK, parce que c’est là que se cachent les régressions, puis avance module par module derrière les tests existants.

Spring Batch ou Kafka : lequel choisir ?

Spring Batch quand le traitement est borné, redémarrable et rapproché d’une source de vérité. Kafka quand il est continu et que la latence compte. La plupart des vrais systèmes utilisent les deux, avec une frontière claire entre garanties par run et garanties par message.

Écrivez-vous des tests ?

Toujours. Des tests unitaires pour la logique, et des tests d’intégration sur une vraie base dans Testcontainers pour tout ce qui touche aux transactions, aux contraintes ou à la concurrence.

Notes de terrain

Réalisations

Compétences liées