@Timed : l'annotation Spring Boot que tout développeur devrait maîtriser
L'annotation @Timed en Spring Boot est utilisée pour mesurer automatiquement le temps d'exécution des méthodes et créer des métriques de performance. Elle fait partie de l'intégration avec Micrometer, la bibliothèque de métriques de Spring Boot.
Fonctionnalité principale
Quand vous annotez une méthode avec @Timed, Spring Boot va automatiquement :
✅ Mesurer le temps d'exécution de la méthode
✅ Créer un timer Micrometer avec des statistiques (temps min, max, moyen, percentiles, etc.)
✅ Exposer ces métriques via les endpoints configurés (comme /actuator/metrics)
Paramètres principaux
• name : nom de la métrique (obligatoire)
• description : description de la métrique
• extraTags : tags supplémentaires pour filtrer/grouper les métriques
• longTask : pour les tâches longues (false par défaut)
• percentiles : percentiles à calculer (ex: 0.5, 0.95, 0.99)
Configuration requise
Pour que @Timed fonctionne, vous devez :
1• Avoir spring-boot-starter-actuator dans vos dépendances
2• Activer l'AOP avec @EnableAspectJAutoProxy (souvent automatique)
3• Configurer l'exposition des métriques dans application.properties
Les métriques sont ensuite accessibles via /actuator/metrics/user.creation par exemple :
{
"name": "user.creation",
"description": "Time taken to create a user",
"baseUnit": "seconds",
"measurements": [
{
"statistic": "COUNT",
"value": 150.0
},
{
"statistic": "TOTAL_TIME",
"value": 12.543
},
{
"statistic": "MAX",
"value": 0.245
},
{
"statistic": "MEAN",
"value": 0.084
}
],
"availableTags": [
{
"tag": "exception",
"values": ["none", "DataIntegrityViolationException"]
},
{
"tag": "method",
"values": ["createUser"]
},
{
"tag": "class",
"values": ["com.example.UserService"]
}
]
}
je préfère la.classe StopeWatch pour mesurer même les régions de code au milieu d'une méthode et associer un nom pour chaque régions et l'afficher via un logger
ça donne un tableau récapitulatif de chaque region + pourcentage
il y une classe de même nom de Apache pour le même but