Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 2 · Exercice de TD
Ouvert ou fermé
Injection de dépendances et configuration · niveau 2
Énoncé
Écrire un service Magasin dont la méthode estOuvert() utilise les horaires de l'exercice 2.5 et une horloge injectée. Le tester sans Spring pour un lundi à 10 h, un dimanche à 10 h et un lundi à 8 h 59.
Corrigé
@Service
public class Magasin {
private final Clock horloge;
private final HorairesProperties horaires;
public Magasin(Clock horloge, HorairesProperties horaires) {
this.horloge = horloge;
this.horaires = horaires;
}
public boolean estOuvert() {
LocalDateTime maintenant = LocalDateTime.now(horloge);
if (horaires.joursFermeture().contains(maintenant.getDayOfWeek())) {
return false;
}
return !maintenant.toLocalTime().isBefore(horaires.ouverture())
&& maintenant.toLocalTime().isBefore(horaires.fermeture());
}
}
L'horloge est déclarée par une méthode @Bean, comme dans le chapitre. Les tests figent l'horloge à la date voulue (le 5 octobre 2026 est un lundi, le 4 un dimanche) :
class MagasinTest {
private final HorairesProperties horaires = new HorairesProperties(
LocalTime.of(9, 0), LocalTime.of(19, 0), List.of(DayOfWeek.SUNDAY));
private Magasin le(String dateHeure) {
Clock fige = Clock.fixed(Instant.parse(dateHeure + "Z"), ZoneOffset.UTC);
return new Magasin(fige, horaires);
}
@Test
void ouvertUnLundiMatin() {
assertThat(le("2026-10-05T10:00:00").estOuvert()).isTrue();
}
@Test
void fermeLeDimanche() {
assertThat(le("2026-10-04T10:00:00").estOuvert()).isFalse();
}
@Test
void fermeAvantNeufHeures() {
assertThat(le("2026-10-05T08:59:00").estOuvert()).isFalse();
}
}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.