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 Java Discussion :

Multiples implémentations d'un service [Débutant(e)]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut Multiples implémentations d'un service
    Bonjour,
    J'ai une question concernant la bonne marche à suivre concernant ce que je souhaite faire (lié à spring).
    J'ai dans mon fichier de configuration plusieurs services associés à leur implémentation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean id="monBean" class="path.monBeanImpl" />
    Je récupere ce bean dans mon code via une classe factory de manière classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static MonBean getMonBean() {
    		return getPluggableBean("monBean");
    	}
    Je souhaite pouvoir "switcher" d'implémentation en passant de path.monBeanImpl à path.monBeanImpl2 suivant un paramètre quelconque (peu m'importe l'endroit ou je le défini). J'ai tenté avec Placeholder de lier un fichier de paramètre sans succès. J'ai donc cherché des discussions ou remarques sur ce sujet sans vraiment en trouver donc je me suis dit que je m'y prenais mal pour la mise en oeuvre c'est pourquoi je vous serais reconnaissant de m'éclairer sur la bonne marche à suivre.
    Merci d'avance.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6
    Par défaut
    Le plus simple, c'est d'utiliser un FactoryBean : c'est un bean qui crée d'autres bean. Tu déclares le bean dans le fichier xml, avec un paramètre (qui permet de définir le type concret à retourner), et tu peux directement injecter le FactoryBean, spring s'occupe de tout.

    Exemple :
    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
     
    public class MonBeanFactory implements BeanFactory<MonBean> {
      private String type
      public void setType(String type) {
        this.type = type;
      }
      public MonBean getObject() {
        if (type.equals("type1")) {
          return new MonBean1();
        } else {
          return new MonBean2();
        }
      }
      public boolean isSingleton() {
        return true;
      }
      public Class getObjectType {
        return MonBean.class; // common interface of MonBean1 and MonBean2
      }
    }
    Ensuite ça roule, dans le fichier de conf tu déclares juste le factory bean (avec la propriété type) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <bean id="monBean" class="my.path.MonBeanFactory">
      <property name="type" value="type1"/>
    </bean>
    <!-- on peut injecter le bean factory MonBeanFactory quand MonBean est attendu -->
    <bean id="otherBean" class="my.other.path.MyOtherBean">
      <property name="monBean" ref="monBean"/>
    </bean>

Discussions similaires

  1. Implémentation d'un service REST simple en Java
    Par Invité dans le forum REST
    Réponses: 5
    Dernier message: 31/10/2010, 10h40
  2. multiple implémentation de Mouselistener
    Par greg08 dans le forum Composants
    Réponses: 5
    Dernier message: 28/10/2008, 18h20
  3. Réponses: 6
    Dernier message: 09/07/2008, 12h10
  4. Comment implémenter des Web Services asynchrones?
    Par solawe dans le forum Services Web
    Réponses: 7
    Dernier message: 15/05/2008, 16h03
  5. Implémentation d'un service REST simple
    Par Invité dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/05/2008, 14h06

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