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 :

[Débutant] Enrichir une hashmap dans des fichiers différents.


Sujet :

Spring Java

  1. #1
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut [Débutant] Enrichir une hashmap dans des fichiers différents.
    Bonjour,

    Assez débutant sous spring, j'essaie de profiter de l'injection de dépendances pour optimiser un framework en cours de découpage (historiquement hébergée en tant que module jboss, nous le migrons pour être utilisé par des applications spring boot).

    Ce framework contient une factory de bean dont le contenu de ce qu'elle produit doit être dynamique en fonction des modules importés par le développeur.

    Exemple : La Factory fooFactory peut produire, si le développeur a importé les modules A et B, des fooA et fooB.

    Je pensais initier la factory dans l'applicationContext "core" (importé par tous), puis, dans chaque module, enrichir ce bean avec un appel de méthode de ce dernier, mais je ne trouve aucun article ou exemple qui expose cette idée, l'enrichissement est souvent intégralement fait lors de l'init du bean.

    Une autre solution serait d'appeler un bean de configuration pour chaque module qui ne ferait que récupérer la factory pour enrichir son "portefeuille" d'objets construits ... mais je ne sais pas si c'est une idée optimisée.

    Bref, je viens en mode conseil, n'étant pas expert de spring jusqu'à présent.

    Merci pour vos idées et retours.
    See you, space cowboy... and if you're satisfied, click on

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    J'ai enrichi ma demande avec la solution 2 que j'avais en tête :

    1/ J'ai une factory qui stocke une hashmap pour produire des objets de natures différentes (ici j'ai simplifié en mettant l'object en String) :
    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
    package fr.biz.spring.examples.factorydemo.beans;
    import java.util.HashMap;
     
    public class Factory {
     
        private HashMap<String, String> catalog;
     
        public Factory() {
            this.catalog = new HashMap<>();
            catalog.put("default","Default HelloWorld !");
        }
     
        public void addObject(String key, String o){
            catalog.put(key, o);
            listPossibleObjects();
        }
     
        public void listPossibleObjects(){
            catalog.forEach((k,v) -> System.out.println((k + ":" + v)));
        }
     
    }
    et je charge cette factory dans un fichier beans.xml (classique, jusque là)

    Ensuite j'ai un module qui crée ce loader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     package fr.biz.spring.examples.factorydemo.loaders;
    import org.springframework.beans.factory.annotation.Autowired;
    import fr.biz.spring.examples.factorydemo.beans.Factory;
     
    public class SomeLoader {
     
        @Autowired
        private Factory factory;
     
        public void init(){
            factory.addObject("some", "specific HelloWorld");
        }
     
    }
    Je charge dès lors ces deux éléments dans des fichiers différents, dont le module est importé par le fichier principal :

    beans.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <beans ...>    
        <bean id="factory" class="fr.biz.spring.examples.factorydemo.beans.Factory"/>
        <import resource="classpath:/modules/*.xml"/>
     
    </beans>

    beans-module1.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <beans ...>    
        <bean class="fr.biz.spring.examples.factorydemo.loaders.SomeLoader" init-method="init"/>
     
    </beans>

    Tout cela fonctionne ... mais je trouve cela assez lourd de créer un loader "juste pour ca" et j'aurai aimé savoir si je pouvais faire cette manipulation directement dans le fichier beans-module1.xml, ou bien si il existe une méthode plus propre.

    Merci pour vos retours
    See you, space cowboy... and if you're satisfied, click on

  3. #3
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Je ferme la fiche, la solution 2 fonctionnant bien et n'ayant pas trouvé/reçu de meilleure proposition
    See you, space cowboy... and if you're satisfied, click on

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/10/2019, 11h14
  2. Réponses: 4
    Dernier message: 27/11/2008, 19h02
  3. recherche dans une plage dans des fichiers fermés
    Par kikuyu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2008, 11h20
  4. [Log4j] Problème d'écriture dans des fichiers différents
    Par pathfinder06 dans le forum Logging
    Réponses: 5
    Dernier message: 14/04/2008, 12h12
  5. [code]Recherche d'une chaine dans des fichiers
    Par guillaume_pays_ceven dans le forum Contribuez
    Réponses: 5
    Dernier message: 21/06/2007, 15h32

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