Je construis une application Google App Engine à l'aide du printemps 3.1 et j'ai un problème d'obtenir des membres dans l'un de mes pots câblés.
J'ai trois projets: p>
serveur code> li>
-
server.model code> li>
-
serveur.persistence code> li>
ol> J'ai une script de construction de fourmis de sorte que lorsque mon espace de travail construit, il crée des pots pour serveur.model code> et serveur.persistence code> et les met dans le vrai répertoire libérateur pour le projet code> Project code>. p> in Server code>, je peux envoyer des objets d'automne à partir de serveur.model code> et serveur.persistence code>, mais dans server.model code> mon serveur.persistence code> Les haricots ne sont pas câblés même s'ils sont exactement les mêmes que dans serveur code>. P> snippet de mon servlet application config: p> xxx pré> J'ai le code suivant dans le projet code> Projet code> et le code Server.Model code> Projet, et seul le serveur est rempli. Voici celui-ci défaillant: p> xxx pré> edit: strong>
Il suffit de faire un test dans le projet SERVER.MODEL CODE> ESSAYER @Autowired quelque chose que je n'ai pas défini comme un haricot dans ma configuration de demande et n'a pas eu d'erreur. J'aurais dû recevoir une erreur «non trouvé de haricot trouvé» comme si je fais si je fais la même chose pour le projet Code> Server Code>. P> Des idées Pourquoi? P> p>
5 Réponses :
Essayez: au lieu de: p> Lors de l'utilisation de l'Autobile ci-dessus, dans votre printemps XML, essayez: p> au lieu de: p>
Le problème n'est pas de la manière dont il est défini, le printemps ne regarde même pas le code de ce projet pour les membres @autowired. Voir la question Modifier
AutoWire code> dans XML signifie une chose légèrement différente. Au lieu de définir votre haricot en XML, vous pouvez l'annoter comme
@service code>, il sera découvert par le composant-balayage et le
@autowired code> fonctionnera. P>
Je ne pense pas que le printemps scanne même mon pot, qui est le problème. Je peux essayer votre suggestion, mais si j'étais mis en ligne un bœuf de bœuf dans le serveur.Model, cela fonctionne bien. Si j'atouvencois un bean Bugus dans le serveur, je reçois une erreur car le ressort tente de le résoudre et de ne pas le faire.
Dans votre configuration XML, utilisez AutoWire-Candidate Code> Propriété
<bean autowire="byType" id="appEngineDataStore" class="com.impersonal.server.persistance.AppEngineDataStore" autowire-candidate="true" />
Si vous allez à la classe Auto-joueur à l'aide de L'injection d'annotation est effectuée avant l'injection XML, la dernière configuration remplacera donc le premier pour les propriétés câblées par les deux approches. P>
blockQuote>
Vérifier la preuve sur Doc de printemps . p>
Alors, ce que vous devez faire est d'ajouter des annotations pour les classes de
@autowire code> Annotation, la classe d'autobile doit être annotée avec l'une des stéréotypes d'annotation (@ composant, @ contrôleur, @ service, @ référentiel). Le ressort résout la première configuration d'annotation, puis la configuration XML. Ceci est écrit dans le document printemps comme p>
Server code> Projet ainsi que
serveur.model code>. Idem dans le cas de votre troisième projet
serveur.persistence code>. Ajouter des annotations en fonction de couches ou de fonctionnalités. P>
J'ai interprété la documentation différemment, mais vous pouvez être sur quelque chose. J'ai créé une nouvelle classe dans le serveur sans annotation de niveau de classe, et il n'est pas la mise en place de ses membres.
@Mstodd: C'est ce que je dis. Et c'est pourquoi je vous ai dit d'ajouter des annotations stéréotypes (@ composant, @ contrôleur, @ service, @ référentiel) en fonction de la fonctionnalité de la classe
J'imposais mes objets de manière incorrecte. Pour des objets de cadre et tels que les contrôleurs MVC, vous n'avez rien à faire pour que vos membres @Autowired sont câblés. P>
Pour les objets que je créais à la volée, je ne traversais pas le conteneur de la COI, c'est pourquoi leurs dépendances n'étaient pas remplies. P>
Pouvez-vous fournir plus de détails sur la résolution de cela?
Plus de détails pourraient être utiles aussi pour moi. Merci.
Il voulait dire que si vous créez un objet en utilisant "nouveau", il ne sera pas autonome.
Ils sont tirés du même paquet code>?
@Jigarjoshi oui. La classe d'échec est dans l'emballage com.impersonal.server.model
Pourrait être associé: Stackoverflow.com/questions/9564044/...