IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Stubber ou non un service


Sujet :

Spring Web Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 53
    Points : 37
    Points
    37
    Par défaut Stubber ou non un service
    Bonjour,
    J'ai un controller ou j apelle un service.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public interface RestSimpleService
    {
        Client getClient(final String reference);
    }
     
    public class RestSimpleServiceSub implements RestSimpleService
    {
     
        public Client getClient(final String reference)
        {
            final Client client = new ClientImpl();
     
            client.setReference(reference);
            client.setNom("Nom");
            client.setPrenom("Prénom");
            client.setSociete("Société");
            client.setDateCreation(new LocalDate());
            return client;
        }
     
    public class RestSimpleServiceImpl implements RestSimpleService
    {
    @Autowired
        private clientRepo;
    public RestSimpleServiceImpl(){
    }
        public Client getClient(final String reference)
        {
            return clientRepo.findByRef(reference);
        }
     
    @Controller
    public class RestSimpleControleur
     
    {
     
    public  RestSimpleControleur(){
    }
     
    @Autowried
        private RestSimpleService service 
     
        @ResponseBody
        @RequestMapping(value = "/client/{reference}", method = RequestMethod.GET)
        public Client getClient(@PathVariable final String reference)
        {
            return service().getClient(reference);
        }
     
     
    }
    Ma question est la suivante comment pour appeller le service implementé l appel réel (RestSimpleServiceImpl) et appeler avec l appeler stuber.
    Je voudrais pouvoir switcher facilement pour faire des appell réel et des appel stuber.

    Je vous remercie

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Bonjour à vous,

    Le plus simple pour faire des appels réels ou des appels stubbé (comme dans les classes de tests) est d'utiliser l'injection de dépendance par constructeur au lieu de l'injection de dépandance par champs.

    Au lieu d'avoir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MonController {
     
        @Autowired
        private MonService monService;
     
        //....
    }
    Vous aurez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MonController {
        private MonService monService;
     
        @Autowired
        public MonController(MonService monService) {
            this.monService = monService;
        }
     
        //....
    }
    Cela ne changera pas le comportement de spring, mais lorsque vous désirez une version stubée du service, il suffit de faire une nouvelle instance de la classe MonController avec comme argument votre classe stubbée.

    Si vous désirez changer à la volée (ce que je déconseille), vous pouvez également regarder l'injection de dépendance via un setter. Ou simplement ajouter un setter au code précédent.

    Bonne journée

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/03/2007, 21h26
  2. Réponses: 7
    Dernier message: 28/07/2006, 21h21
  3. [SERVICE INTERACTIF] Form non utilisable apres logoff/logon
    Par Spart64 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 05/03/2006, 13h32
  4. Réponses: 1
    Dernier message: 10/02/2006, 19h07
  5. Batch MSDOS : verifier service démarré ou non
    Par Goldorak2 dans le forum Windows
    Réponses: 14
    Dernier message: 21/12/2005, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo