Adloun

Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 2 · Exercice de TD

Choisir un bean par son nom

Injection de dépendances et configuration · niveau 2

Énoncé

Deux transporteurs implémentent Transporteur (int delaiEnJours()) : le standard (3 jours) et l'express (1 jour). Un service LivraisonUrgente doit recevoir l'express, d'autres services le standard. Nommer les deux beans et écrire LivraisonUrgente.

Corrigé

Le nom d'un bean se donne dans l'annotation de sa classe :


@Component("express")
public class TransporteurExpress implements Transporteur {

    @Override
    public int delaiEnJours() {
        return 1;
    }
}

(et @Component("standard") pour l'autre), puis on le désigne dans le constructeur :


@Service
public class LivraisonUrgente {

    private final Transporteur transporteur;

    public LivraisonUrgente(@Qualifier("express") Transporteur transporteur) {
        this.transporteur = transporteur;
    }

    public int delai() {
        return transporteur.delaiEnJours();
    }
}

Les autres services, qui demandent un Transporteur sans qualificatif, provoqueraient l'erreur des deux beans : on donne donc aussi @Qualifier("standard") à leur paramètre, ou @Primary au transporteur standard.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →