Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 2 · Application directe du cours
Un courriel factice en développement
Injection de dépendances et configuration · niveau 2
Énoncé
La Librairie enverra des courriels de confirmation. En développement, on ne veut pas en envoyer pour de vrai, seulement les afficher. Écrire une interface EnvoiCourriel et deux implémentations, l'une active seulement dans le profil dev, l'autre dans tous les autres cas, puis deux tests qui vérifient laquelle est injectée avec et sans ce profil.
Corrigé
/** En développement : le courriel est seulement affiché, jamais envoyé. */
@Component
@Profile("dev")
public class EnvoiFactice implements EnvoiCourriel {
@Override
public String envoyer(String destinataire, String texte) {
return "[factice] à " + destinataire + " : " + texte;
}
}
/** Partout ailleurs : le vrai envoi (simulé ici par un message différent). */
@Component
@Profile("!dev")
public class EnvoiSmtp implements EnvoiCourriel {
@Override
public String envoyer(String destinataire, String texte) {
return "[smtp] à " + destinataire + " : " + texte;
}
}
Le point d'exclamation de @Profile("!dev") signifie « quand le profil dev n'est pas actif » : il y a toujours exactement une implémentation. Dans un test, @ActiveProfiles choisit les profils :
@SpringBootTest
@ActiveProfiles("dev")
class EnvoiCourrielDevTest {
@Autowired
EnvoiCourriel envoi;
@Test
void enDevLEnvoiEstFactice() {
assertThat(envoi).isInstanceOf(EnvoiFactice.class);
}
}
Le second test, sans @ActiveProfiles, vérifie qu'on reçoit un EnvoiSmtp.
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.