|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||
|
Membre régulier
![]() Christophe Inscription : novembre 2009 Messages : 78 ![]() |
Bonjour,
j'ai un devoir qui consiste, entre autres, à passer d'un singleton basique (connexion JDBC) à l'utilisation de Spring. En bref, je dois virer le singleton de mon projet et utiliser l'injection de dépendances. Mais j'ai quelques problèmes pour le faire... Actuellement, j'ai un singleton qui instancie un objet de type Connection : Code :
Code :
Code :
Du coup, j'ai tenté dans mon DAO : Code :
Code :
Ma question est donc la suivante : Comment puis-je récupérer un objet de type Connection avec Spring afin de l'injecter dans ma classe DAO ? Je vous remercie |
||||||||||
|
|
00
|
|
|
#2 |
![]() ![]() |
C'est ton datasource qui est null. Il est null parce que spring ne l'a pas encore injecté. Spring ne l'a pas encore injecté parce qu'il est seulement à l'étape de construction de ton objet.
Tu ne dois utiliser dans ton constructeur aucun champ injecté par spring
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() "Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973) |
|
|
20
|
|
|
#3 |
|
Membre régulier
![]() Christophe Inscription : novembre 2009 Messages : 78 ![]() |
Merci pour la réponse rapide.
Dans ce cas là, je ne vois pas où je pourrais récupérer mon objet de type Connection si ce n'est pas dans le constructeur. Soit je le fais au début de chaque méthode que j'utilise dans mon DAO (c'est répétitif), soit je trouve une autre solution. Et à vrai dire, je n'ai pas d'idées car je débute avec Spring. Auriez-vous une idée pour que je puisse injecter simplement mon objet Connection ? Ou même un lien vers une doc qui ressemble à peu près à ce que je veux faire ? Je vous remercie |
|
|
00
|
|
|
#4 |
![]() ![]() |
A priori, c'est à chaque appel au DAO qu'on effectue une demande de connexion au datasource, ça permet de gérer correctement le multi tâches et ça évite aussi de maintenir trop longtemps un connexion.
Au delà de ça, pour votre initialisation, vous avez deux possibilités pratiques: Soit créer une méthode "init" (ou autre nom) dans votre dao qui fait ce travail et demander à spring d'appeler cette méthode (paramètre init-method du tag <bean>) Soit passer en paramètre au constructeur les objets dont vous avez besoin dans le constructeur (<contructor-arg> dans le fichier spring)
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() "Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973) |
|
|
10
|
|
|
#5 |
|
Membre régulier
![]() Christophe Inscription : novembre 2009 Messages : 78 ![]() |
Encore merci pour cette réponse.
J'ai finalement réussi ce que je voulais grâce à votre aide. J'ai ajouté une méthode init() à ma classe DAO. Puis, j'ai appelé avec spring cette méthode comme vous me l'avez indiqué (et en regardant la doc pour la syntaxe) pour modifier ma variable de connexion. Résolu
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com