L'importation de Printemps de haricots provenant d'autres Maven modules à l'intérieur d'une GUERRE?
J'ai une nouvelle application web qui est emballé comme une GUERRE dans le cadre d'un multi-module de projet Maven. L'applicationContext.xml pour cette GUERRE, les références des haricots importés à partir du "service" module de, qui à son tour les importations de haricots du "dao" module. L'instruction d'importation dans applicationContext.xml ressemble à ceci:
<import resource="classpath*:service.xml" />
et celui à l'intérieur de la service.xml fichier ressemble à ceci:
<import resource="classpath*:dao.xml" />
Ni Printemps STS, ni Eclipse afficher des avertissements ou des erreurs dans mon haricot fichiers. Je référence de la importées de fèves de tous sur la place. Le Maven build fonctionne bien et la DAO tests d'intégration de tous les passer (ils utilisent les haricots). Je n'ai pas de service de tests d'intégration encore.
Mais lorsque je démarre la GUERRE dans la Jetée, j'obtiens une erreur:
Error creating bean with name 'securityService'
Cannot resolve reference to bean 'userDAO' while setting constructor argument
Tous les haricots importés des fichiers XML peuvent être trouvés à l'intérieur de leurs respectifs des fichiers JAR dans le dossier WEB-INF/lib du répertoire. En effet, le service de haricot qui a déclenché l'erreur est elle-même définie à l'intérieur de la service.xml fichier à l'intérieur du module de service du fichier JAR.
Apparemment le module de service ne peut pas trouver la fève qu'il importés de la dao module. Évidemment, je ne comprends pas quelque chose...semble que cela devrait-il Juste de Travail?
Vous devez vous connecter pour publier un commentaire.
J'ai activé la journalisation du DÉBOGAGE pour 'org.springframework " afin de voir si je pouvais apprendre quelque chose. Ce que j'ai trouvé étaient des messages à l'effet que le DAO haricots avait été créé, mais il y avait aussi un message à propos d'eux ayant pas de nom ou id.
J'ai vérifier le fichier, et ils ont tous fait avoir une carte d'identité. Alors, quel était-il? - Je vérifier l'espace de noms XML et vu:
et remarqué qu'il était vieux (je suis en utilisant le Printemps 3.0.2) et cela a changé:
Une fois que je l'ai changé, Printemps instantanément jeté une demi-douzaine d'erreurs concernant des haricots qui ont été définis de manière incorrecte (mais jamais utilisé apparemment). Une fois que j'ai corrigé ces erreurs, tout Simplement Travaillé. Depuis, j'ai traversé l'ensemble du système de vérification de Printemps fichier XML de noms versions.
Merci à tous pour l'aider. Ne peux pas croire que j'ai perdu une journée sur cette stupidité!!
La différence entre le
classpath:thingy.xml
etclasspath*:thingy.xml
notation, c'est que le premier utilise la norme classpath mécanisme pour résoudre une ressource (à l'aide de Chargeur de classe.getResource(nom)), alors que ce dernier utilise Chargeur de classe.getResources(nom) pour récupérer toutes les ressources de contrepartie sur le chemin de la classe, une distinction qui doit être hors de propos dans votre situation, je pense qu'il y a un seuldao.xml
fichier sur le chemin de classe.Je pense que votre problème est différent, il vous manque un slash.
Utiliser ce pour une seule ressource
et cela pour de multiples ressources
Voir
préfixe
Il doit être comme
Êtes-vous d'avoir plusieurs applicationContexts et, éventuellement, le contexte parent est en se référant à un bean défini dans le contexte enfant?