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 :

Utilisation de la réflection avec Spring


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Utilisation de la réflection avec Spring
    Bonjour,

    J'utilise Spring et je souhaites appeler une méthode d'une classe dont le nom est reçu en paramètre. Je m'explique :

    Je reçois trois valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String className
    String MethodeName
    String[] arguments
    et je veux appeler la méthode avec les arguments.

    En java classique, j'utilise habituellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Class maClasse = Class.forName(className);
    Method maMethode = maClasse.getMethod();
    maMethode.invoke(maClasse.newInstance(), arguments);
    mais j'obtiens une erreur d'injection de dépendance (null pointeur) donc je me demande comment faire avec Spring.

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object monObjet = applicationContext.getBean(className);
    Mais ensuite, je ne sais pas comment appeler ma méthode ...

    L'erreur du pointeur nul ne provient pas de ma classe, je l'ai testé en dur (avec Spring).

    merci

  2. #2
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    ce code utilise le constructeur par défaut peut être tu devrais utiliser classe.getConstructor... afin de simuler l'injection de dépendance (ou initialiser tes propriétés dans ton cstr par défaut).
    J'espère que ça t'a aidé mais j'ai du mal à comprendre ton besoin

    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Merci de ta réponse si rapide

    Tu a raison, le problème doit venir de newInstance() qui court-circuite Spring...

    J'ai essayé en remplaçant newInstance par mon objet obtenu avec Spring :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Object monObjet = applicationContext.getBean(className);
    Class maClasse = Class.forName(className);
    Method maMethode = maClasse.getMethod();
    maMethode.invoke(monObjet , arguments);
    mais j'ai toujours une erreur d'injection ...

    Ce que je veux faire derrière ce programme, c'est une console qui me permet de rentrer des commandes qui correspondent aux méthodes de certaines classes de mon application.

    Exemple :

    je tape : Customer.listAll dans ma console et ça exécute la méthode listAll de la classe Customer et retourne le résultat sur la console.

  4. #4
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    tu peux transmettre la stacktrace stp??
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Résolu .... je n'avais pas clean and build

    Le code ci-dessous à résolu mon soucis d'injection et tout marche bien. Merci de ton aide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Object monObjet = applicationContext.getBean(className);
    Class maClasse = Class.forName(className);
    Method maMethode = maClasse.getMethod();
    maMethode.invoke(monObjet , arguments);

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/10/2013, 23h36
  2. [Security] Utiliser l'authentification avec Spring Security
    Par wadjaawbk dans le forum Spring
    Réponses: 4
    Dernier message: 21/11/2011, 18h23
  3. Réponses: 7
    Dernier message: 09/04/2010, 18h48
  4. [Batch] [Quartz] Utilisation et execution d´un Batch avec Spring
    Par makohsarah dans le forum Spring
    Réponses: 4
    Dernier message: 24/06/2008, 10h41
  5. [Data] utiliser Hibernate avec Spring
    Par badi082 dans le forum Spring
    Réponses: 4
    Dernier message: 13/03/2007, 09h40

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