Printemps - Comment utiliser le Printemps de l'Injection de Dépendances pour écrire une Application Java Autonome
Je veux écrire une application autonome avec le CIO, comment puis-je utiliser les ressorts de l'injection de dépendance? Je suis en utilisant JIdea. Il est du ressort 2.5 mais je veux utiliser le printemps 3.0 voici la façon dont j'ai essayé!
J'ai de l'expérience dans l'utilisation de Spring MVC, nous pouvons injecter des dépendances dans un WebApplicationContext mais comment puis-je injecter des dépendances dans une application autonome
J'ai essayé ce
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"com\\ttg\\xmlfile.xml"});
mais je ne vois pas que les dépendances sont injectés par les grains qui y sont définies (dans le fichier XML)
J'ai mis le code ci-dessus dans la méthode principale et deux haricots définitions pour les deux Objets,l'un Java constructeur de la classe, j'ai utilisé l'autre de la classe de l'objet qui a été injecté à cet objet et appelle une méthode sur ce qui permet d'imprimer quelque chose, mais il n'a pas travaillé, je pensais que le code ci-dessus crée de toutes les dépendances et l'injecte, mais il ne semble pas que
Comment puis-je utiliser correctement les Ressorts du CIO, l'injection de dépendance dans mon application indépendante qui ne contient pas de WebApplicationContext?
Veuillez mentionner les étapes.
<!-- bean id="" class="com.tst.Un" property name="pb" ref="b" bean bean id="b" class="com.tst.B" lazy-init="false" bean --------- public class main { public static void main(String[] args) { ApplicationContext contexte = new FileSystemXmlApplicationContext("com\\tst\\tst.xml"); a = (a)contexte.getBean("un"); une.m(); } -------- public class A { private B pb; public A() { sout("A:"+"\n"); } public void setPb(B, pb) { this.pb = pb; } public void m() { pb.m(); } } ------------- public class B { public void m(){ sout("Bm()"+"\n"); } } -->
OriginalL'auteur Buddhi | 2009-05-14
Vous devez vous connecter pour publier un commentaire.
supposons que vous avez:
l'context.xml fichier
alors ce doit être vrai
OriginalL'auteur Mihai Toader
vous pouvez utiliser permettra à l'autowiring de l'appui fourni par le printemps, afin d'injecter des dépendances (et éventuellement appliquer des post-processeurs) pour un objet qui ne fait pas partie du contexte de l'application.
Dans votre cas, cet objet est à votre application autonome.
Ici est la façon d'atteindre cet objectif. Dans cet exemple, j'utilise @Autocâblés (b1), traditionnel DI (b2) et de l'initialisation de crochet pour la b3. Le soutien permettra à l'autowiring avec des annotations suppose que vous avez défini le ressort appropriée post-processeur de votre contexte de l'application (par exemple, en déclarant
<context:annotation-config/>
).Dans cet exemple, tous les b1, b2 et b3 doit être non null (en supposant que b1 et b2 haricots existent dans votre contexte de l'application).
Je n'ai pas testé (peut même pas compiler en raison de certaines faute de frappe), mais l'idée est dans les 3 dernières lignes. Voir la javadoc
AutowireCapableBeanFactory
ainsi qu'une mention des méthodes pour voir exactement ce qui se passe.OriginalL'auteur Gaetan
Si vous préférez (pour la plupart) pur java, vous pouvez utiliser java config:
Puis à instancier:
Garder à l'esprit qu'il ya quelques choses que pure annotation de configuration n'a pas encore de soutien (comme des choses comme tx:annotation-driven), dont vous pourriez avoir besoin un peu de xml colle le code.
Et ensuite utiliser un standard basé sur xml façon de créer de l'ApplicationContext (comme ClasspathXmlApplicationContext, ou le printemps contexte web loader, etc...).
OriginalL'auteur Matt
Comment avez-vous confirmer que les haricots ne sont pas câblé correctement? Un problème commun est le fichier de configuration xml de ne pas être au bon endroit. Pouvez-vous nous donner plus d'informations, comme votre projet de mise en page et le code que vous utilisez pour obtenir les haricots du conteneur?
OriginalL'auteur neesh
Si vous ajoutez log4j vous connecter à votre application, vous devriez voir une cascade de messages qui vont vous en dire beaucoup sur ce que le Printemps est et n'est pas en train de faire. Si vous n'avez pas de commentaires, vous êtes dans l'obscurité. Vous pourriez être en mesure de repérer la réponse tout en obtenant plus d'informations de Printemps de log4j.
OriginalL'auteur duffymo
Faites-vous appel à
context.getBean("beanName")
pour obtenir une référence à la fève ou que tu fais unnew SomeClass()
? Si vous le faites par le biais degetBean()
puis l'injection de propriétés doivent être définies.Aussi, assurez-vous d'utiliser la même bean factory (ClassPathXmlApplicationContext exemple) pour récupérer tous vos haricots. Cela devrait probablement être statique finale et utilisé par l'ensemble de l'application.
OriginalL'auteur Taylor Leese
vous pouvez utiliser la commande @Autocâblés
OriginalL'auteur jpganz18