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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

Inversion de contrôle avec PicoContainer


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut Inversion de contrôle avec PicoContainer
    Bonjour,

    je suis étudiant en 4ème année et je profite de mes vacances pour prendre de l'avance sur la 5ème année.
    J'ai donc commencé le premier TP qui concerne l'inversion de contrôle et les conteneurs. En l'occurrence on doit utiliser PicoContainer, j'ai bien regardé la doc, mais je ne suis pas certain d'avoir compris la totalité du contenu.

    Pour faire simple, j'ai 3 classes : Repertoire, PersonneDAO, PersonneXMLDAO, Personne.
    PersonneDAO n'est qu'une interface implémentée par PersonneXMLDAO.
    Personne contient 3 champs pour le nom, le prénom et l'identifiant, le constructeur se fait en donnant 3 valeurs correspondant aux champs et avec une instance de PersonneXMLDAO.
    PersonneXMLDAO contient le nom d'un fichier et un document, il y a une méthode : getAllPersonnes() qui renvoie une liste de Personnes, le constructeur se fait en donnant le nom d'un fichier.
    Repertoire contient une liste de Personnes, et un PersonneDAO.

    Pour l'ajout des composants dans mon conteneur, j'ai bêtement suivi la documentation, et j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                    pico = new DefaultPicoContainer();
    		pico.addComponent("test-repertoire.xml");
    		pico.as(Characteristics.CACHE).addComponent(PersonneXMLDAO.class);
    		//pico.addComponent(ArrayList.class);
    		pico.as(Characteristics.CACHE).addComponent(pico.getComponent(PersonneXMLDAO.class).getAllPersonnes());
    		pico.addComponent(Repertoire.class);
    		pico.getComponent(Repertoire.class).start();
    		pico.start();
    La ligne en commentaire correspond à ce que je pensais devoir faire avec la liste des personnes, cependant, ça ne marche pas, ma liste reste vide, ce qui est normal étant donné que la liste est juste initialisée et la méthode getAllPersonnes() n'est jamais appelée. Donc j'ai écrit la ligne suivante, mais ça ne me paraît pas cohérent étant donné qu'on stocke dans le conteneur un élément qui est instancié et non pas juste une classe à instancier.

    Mon code est il actuellement correct ou mon raisonnement est il cohérent et mon code incorrect ?

    Merci d'avoir lu

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Salut,

    Je ne connais pas PicoContainer et je n'ai pas non plus une vue d'ensemble sur ton code, mais pour tenter de répondre à ta question, si ton code est opérationnel (te permet d'obtenir ce que tu souhaites), alors oui il est correct... mais si ta question est "est-ce que j'ai bien compris le principe d'inversion de contrôle ?" alors je te dirais que si tu arrives à récupérer des instances de tes classes persos (cf: Repertoire, PersonneXMLDAO etc) en passant par Pico (et donc sans les instancier explicitement via un new) alors oui là aussi c'est correct.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    Salut,

    Je ne connais pas PicoContainer et je n'ai pas non plus une vue d'ensemble sur ton code, mais pour tenter de répondre à ta question, si ton code est opérationnel (te permet d'obtenir ce que tu souhaites), alors oui il est correct... mais si ta question est "est-ce que j'ai bien compris le principe d'injection de contrôle ?" alors je te dirais que si tu arrives à récupérer des instances de tes classes persos (cf: Repertoire, PersonneXMLDAO etc) en passant par Pico (et donc sans les instancier explicitement via un new) alors oui là aussi c'est correct.
    Bonjour,

    merci beaucoup pour la réponses, je me suis creusé la tête pendant plusieurs heures à ce sujet là et au final je ne vois vraiment pas d'autre façon de faire, après tout c'est vrai que je n'utilise pas de New, ce qui signifie bien que ce n'est pas moi qui instancie mes classes. Avec ça on peut en déduire qu'une inversion de contrôle est réellement faite.

    Merci encore !

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    N'hésite pas à marquer le sujet comme résolu si tu estimes avoir obtenu toutes tes réponses
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

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

Discussions similaires

  1. Accéder à un contrôle avec son numéro
    Par nattyman dans le forum Access
    Réponses: 2
    Dernier message: 23/09/2006, 06h47
  2. [C#] Création d'un contrôle avec collection intégrée
    Par nerix dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/06/2006, 10h07
  3. [PostGreSQL] contrôle avec une requête
    Par flo78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/01/2006, 10h52
  4. Réponses: 3
    Dernier message: 15/11/2005, 18h50
  5. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38

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