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 :

Spring namespace bean singleton


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut Spring namespace bean singleton
    Hello,

    Je suis néophyte en spring. Je souhaite créer un namespace avec mes propres tag. J'ai vu la doc pour créer un namespace.

    Par contre je me demande comment créer un bean singleton. Mon objectif est lorsque je rencontre les tags personnalisés, on alimente le même bean.
    Quel BeanDefinitionParser je dois utiliser et comment? Il faut que je crée mon propre BeanDefinitionParser?

    Un peu d'aide merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut
    Hello,

    Personne ne peut m'aider sur la manière de gérer la portée d'un bean dans un namespace?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut
    J'avance dans mon problème. Mais un peu d'aide serait bien.

    Donc j'ai créé un namespace. D'après ce que je vois il crée des beans singleton.

    J'ai surchargé la méthode resolveId pour y mettre toujours le même id. Cependant, il me crée toujours des bean différents et il écrase mes propriété.

    Je m'explique. J'ai créé des tag:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <toto>
     <titi name="riri1" value="loulou1" />
    </toto>
    <toto>
     <titi name="riri2" value="loulou2" />
    </toto>
    J'ai donc surchargé la méthode resolveId dans mon AbstractSimpleBeanDefinitionParser afin de lui donner toujours la même valeur: monId.

    Le tag titi permet de remplir une map (propriété de la classe du bean "monId").

    Toutefois lorsque je récupère mon bean "monId" dans mon appli, et que je récupère la map il n'y a qu'une seule clé: riri2.

    A chaque balise toto, il me ré-écrase la map. Y a t il un moyen réutiliser le même bean afin d'avoir à la fin mon bean "MonId" ayant une map avec les deux clés: riri1 et riri2.

    Est ce plus clair? J'ai vraiment besoin d'aide S.V.P..

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut
    Bon j'ai finalement trouvé une solution pour mon problème. Il suffit de créer une propriété de type MutablePropertyValues dans la classe qui étend AbstractSimpleBeanDefinitionParser.

    j'ai modifié la méthode postProcess de cette comme ceci:
    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
     
    private MutablePropertyValues properties;
     
    protected void postProcess(BeanDefinitionBuilder beanDefinition, Element element) {
            super.postProcess(beanDefinition, element);
     
            if (properties == null) properties = beanDefinition.getBeanDefinition().getPropertyValues();
     
            List<?> l = DomUtils.getChildElementsByTagName(element, "titi");
            for (Object l1:l) {
                Element e =(Element)l1;
                PropertyValue val = properties.getPropertyValue("map");
                if (val == null){
                    properties.addPropertyValue("map", new HashMap<String, String>());
                     val = properties.getPropertyValue("map");
                }
                ((Map<String,String>)val.getValue()).put(e.getAttribute("name"), e.getAttribute("value"));
            }
     
            beanDefinition.getBeanDefinition().setPropertyValues(properties);
        }
    ça fonctionne. Par contre je ne sais pas si c'est le meilleur moyen.

Discussions similaires

  1. Struts 2 + Spring - Interceptors - Bean Null
    Par Jacques J dans le forum Struts 2
    Réponses: 1
    Dernier message: 24/11/2011, 16h11
  2. Spring et bean scope request
    Par mthebault dans le forum Spring
    Réponses: 0
    Dernier message: 21/09/2010, 17h25
  3. Créer son bean de config avec Spring
    Par progamer54 dans le forum Spring
    Réponses: 1
    Dernier message: 10/04/2007, 17h02
  4. Réponses: 4
    Dernier message: 10/09/2006, 10h49
  5. Réponses: 12
    Dernier message: 24/05/2006, 15h37

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