Bonjour.
Je suis en train de tester Spring Annotations.
Lorsque j'appelle un service, celui-ci est instancié mais pas le dao sous-jacent malgré une annotation @autowired.
Pourtant, lorsque je remplace les annotations par la notation classique dans applicationContext.xml, il n'y a aucun problème.
Voici le contexte :
J'ai fait un projet Maven sous Eclipse.
J'ai importé la dépendance Spring dans le pom.xml:
(Déjà je ne comprends pas pourquoi on ne peut pas voir la version 3 dans les repositories.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.6</version> </dependency>
Voici mon applicationContext.xml :
La classe service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?xml version="1.0" encoding="UTF-8"?> <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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /> <context:component-scan base-package="fr.vtest.annotations" /> </beans>
qui devrait m'instancier le dao suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @Service("userService") @Scope("singleton") public class UserServiceImpl implements UserService { public UserServiceImpl() { super(); } private UserDAO userDAO; @Autowired public void setUserDAO(@Qualifier("userDAO") UserDAO userDAO) { this.userDAO = userDAO; } }
A l'appel du service j'ai bien le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @Repository("userDAO") @Scope("singleton") public class UserDAOImpl implements UserDAO { }
Creating shared instance of singleton bean 'userService',
mais pas celui du dao.
Si j'utilise le fichier xml de manière classique:
j'ai bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <bean id="userService" class="fr.test.service.UserServiceImpl" scope="singleton"> <property name="userDAO"> <ref bean="userDAO" /> </property> </bean>
Creating shared instance of singleton bean 'userService'
Creating shared instance of singleton bean 'userDAO'
J'ai cru lire qqpart que c'était peut-être dû à l'utilisation de Maven.
J'ai essayé de zapper maven en mettant le jar de spring à la main dans le BuildPath mais ça ne change rien.
Toute piste sera appréciée
Partager