À l'aide de Printemps 3 autowire dans une application Java autonome
Voici mon code:
public class Main {
public static void main(String[] args) {
Main p = new Main();
p.start(args);
}
@Autowired
private MyBean myBean;
private void start(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("META-INF/config.xml");
System.out.println("my beans method: " + myBean.getStr());
}
}
@Service
public class MyBean {
public String getStr() {
return "string";
}
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="mypackage"/>
</beans>
Pourquoi ne pas ce travail? Je reçois NullPointerException
. Est-il possible d'utiliser permettra à l'autowiring dans une application autonome?
- Faire un effort pour faire de votre question lisible. Et de nous montrer la trace de pile d'exception.
- Je maintiens un opérationnelles exemple ici: tshikatshikaaa.blogspot.com/2012/08/...
Vous devez vous connecter pour publier un commentaire.
Des travaux du printemps en application autonome. Vous utilisez le mauvais sens pour créer un ressort de haricot. La façon correcte de le faire comme ceci:
Dans le premier cas (celui de la question), vous créez l'objet par vous-même, plutôt que de l'obtenir à partir du Printemps contexte. Si le Printemps n'a pas eu la chance de
Autowire
les dépendances (ce qui provoque laNullPointerException
).Dans le second cas (celui de cette réponse), vous obtenez la de la fève de Printemps contexte et donc c'est le Printemps, géré et le Printemps prend soin de
autowiring
.new ArrayList()
, par exemple? Si vous avez une classe autocâblés paramètres et vous l'instancier avecnew
puis l'permettra à l'autowiring n'aura pas lieu.<context:annotation-config /> <context:component-scan base-package="com.yourcompany.mycomponents" />
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [Main] is defined
=(Printemps s'éloigne à partir de fichiers XML et utilise les annotations fortement. L'exemple suivant est une simple autonome Printemps application qui utilise l'annotation au lieu de fichiers XML.
C'est un simple haricot. Il est décoré de la
@Component
annotation pour l'auto-détection de Printemps conteneur.C'est le principal
Application
classe. Le@ComponentScan
annotation des recherches pour les composants. Le@Autowired
annotation injecte de la fève dans lamessage
variable. LeAnnotationConfigApplicationContext
est utilisé pour créer le Printemps contexte de l'application.Mon Autonome Printemps tutoriel montre comment créer une application autonome Printemps application avec XML et annotations.
Pour le Printemps 4, à l'aide de Printemps de Démarrage, nous pouvons avoir l'exemple suivant, sans l'aide de l'anti-modèle de l'obtention de la de la Fève de ApplicationContext directement:
Assurez-vous que tous vos injecté services sont sous
com.yourproject
ou de ses sous-paquets.Une belle solution serait de le faire à la suite,
Alors vous pouvez l'utiliser comme:
J'ai trouvé cette très belle solution dans le site web suivant: https://confluence.jaytaala.com/pages/viewpage.action?pageId=18579463