|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
Bonjour à tous,
Je développe une application avec spring, hibernate et Vaadin. j'ai un problème avec l'injection de dao dans mes classes d'interface graphique. Dans certaines classes l'injection se fait avec réussite tandis que dans d'autres classes la référence dao retourne null ce qui provoque une NullPointerException. J'ai beau cherché sur internet et les forum sans trouver aucune solution . Voici le fichier de configuration beans.xml Code :
Code :
Code :
Code :
|
||||||||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Thomas SegismontDéveloppeur Java Inscription : mai 2012 Messages : 29 ![]() |
Il faut que ton projet soit compilé avec le AJC (compilateur d'AspectJ)
Si c'est un projet Maven, tu peux ajouter ça Code :
|
||
|
01
|
|
|
#3 |
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
Bonjour net merci pour votre réponse,
Le compilateur AJC est déjà présent dans le pom.xml , l'application fonctionne et je peut accèder à l'interface de login et quelques autre interfaces de gestion, seules 2 ou 3 interfaces qui ne sont pas accessibles à cause de l'erreur NullPointerException générée par l'appel au DAO qui doit être injecté par spring. Il y'a quelques modifications que je dois apporter au projet pour ajouter une couche Service, peut être que ça résoudra le problème . Je vous tient au courant si je résout le problème . Si vous avez quelques conseils ou explications à propos de l'implémentation de la couche service merci de m'en faire part |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
même problème avec le service
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
En insérant un System.out.println dans le constructeur du bean, j'ai constaté qu'il est instancié mais il n'est pas injecté, pourtant j'ai mis @Autowired au dessus de la variable . Pourquoi ?
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Thomas SegismontDéveloppeur Java Inscription : mai 2012 Messages : 29 ![]() |
Il te manque peut-être ça dans ta config Spring :
|
|
00
|
|
|
#7 | ||||||||||||
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
j'ai ajouté la balise annotation-config mais elle n'a pas résolu le problème
l'erreur générée : Code :
Code :
Code :
Voici le bean de service authentification injecté dans la classe ConnexionWindow: Code :
Code :
Enfin voici le DEBUG par log4J : Code :
merci d'avance pour votre aide |
||||||||||||
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
SVP, Toute aide est appréicée
|
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Thomas SegismontDéveloppeur Java Inscription : mai 2012 Messages : 29 ![]() |
Regarde tes logs, l'injection est faite après l'appel au constructeur.
Ce qui est juste normal : Spring instancie l'objet (donc appel du constructeur) puis fait l'injection des dépendances. Transforme ton faux constructeur en méthode annotée @PostConstruct et tu devrais avoir ce que tu veux. |
|
00
|
|
|
#10 | |
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
Citation:
Je ne comprend pas très bien la solution proposé .Que veut tu dire par faux constructeur ? merci |
|
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Thomas SegismontDéveloppeur Java Inscription : mai 2012 Messages : 29 ![]() |
"Faux" car il ne sert à rien.
Donc je reformule : Supprime ton constructeur et remplace le par : Code :
|
||
|
00
|
|
|
#12 | ||||||
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
Merci pour l'explication,
Miracle demi-fait, le problème est résolu pour le service d'Authenfication. Code :
Code :
le seul output qui est généré est celui généré par le constructeur: ui.FormGestionProfil>> 14:32:31,899 DEBUG FormGestionProfil:54 - injecting instance of utilisateurService through construction null Pour info, la classe FormGestionProfil est instancié par new() , donc je ne peut pas dire que spring fait l'injection par constructeur Voici les messages de Log générés par le service d'authentification : Code :
|
||||||
|
|
00
|
|
|
#13 | ||||
|
Membre du Club
![]() Thomas SegismontDéveloppeur Java Inscription : mai 2012 Messages : 29 ![]() |
Si tu veux que l'injection ait lieu avant l'appel au constructeur dans ce cas tu dois annoter ta classe avec :
Ne fais pas de confusion entre @Configurable @Service:
Et puis dans ton fichier de config essaie de remplacer ça : Code :
Code :
|
||||
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : novembre 2008 Messages : 43 ![]() |
Merci à tous pour votre aide, Problème résolu et tous va bien
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com