Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 11 · Application directe du cours
Un indicateur pour le catalogue
Mettre en production · niveau 2
Énoncé
Ajouter à la santé un indicateur « catalogue », qui donne le nombre de livres et le nombre de livres en rupture, et qui passe à DOWN si le catalogue est vide.
Corrigé
Un bean qui implémente HealthIndicator. Le nom du composant dans la réponse est celui du bean, d'où @Component("catalogue") (sans nom, il s'appellerait catalogueSante).
/**
* Exercice 11.2 : « catalogue » dans /actuator/health — le nom du bean, d'où
* {@code @Component("catalogue")}. Hors service si le catalogue est vide.
*/
@Component("catalogue")
public class CatalogueSante implements HealthIndicator {
private final LivreDepot livres;
public CatalogueSante(LivreDepot livres) {
this.livres = livres;
}
@Override
public Health health() {
long total = livres.count();
long enRupture = livres.findAll().stream().filter(l -> l.getStock() == 0).count();
Health.Builder etat = total > 0 ? Health.up() : Health.down();
return etat.withDetail("livres", total).withDetail("enRupture", enRupture).build();
}
}
$ curl -s -u admin:libraire-2026 http://localhost:8000/actuator/health/catalogue
{"details":{"livres":6,"enRupture":1},"status":"UP"}
@Test
void lIndicateurDuCatalogueApparaitPourLAdministrateur() {
assertThat(mvc.get().uri("/actuator/health").header("Authorization", "Basic YWRtaW46bGlicmFpcmUtMjAyNg=="))
.hasStatusOk()
.bodyJson().extractingPath("$.components.catalogue.details.livres").isEqualTo(6);
assertThat(mvc.get().uri("/actuator/health"))
.bodyJson().doesNotHavePath("$.components");
}
(YWRtaW46bGlicmFpcmUtMjAyNg== est admin:libraire-2026 en Base64.) Charger tous les livres pour les compter n'est raisonnable qu'avec un petit catalogue ; une requête de comptage dans le dépôt ferait mieux, car un indicateur est interrogé souvent.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.