Salut les amis,
J'ai un problème de dépendances, voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDaoImp': Unsatisfied dependency expressed through field 'sessionFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.hibernate.SessionFactory' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
UserDao
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Repository public class UserDaoImp implements UserDao { @Autowired private SessionFactory sessionFactory;
UserService :
controlleur :
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
17 @Service public class UserServiceImp implements UserService { @Autowired private UserDao userDao; @Transactional public void save(User user) { userDao.save(user); } @Transactional(readOnly = true) public List<User> list() { return userDao.list(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Controller public class UserController { @Autowired(required=true) private UserService userService; ...
et les scan :
En fait, j'ai remarqué qu'en fonction de l'ordre des scan, l'erreur se met sur la première injection qu'il doit effectuer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ... <context:component-scan base-package="fr.acme.dao" /> <context:component-scan base-package="fr.acme.service" /> <context:component-scan base-package="fr.acme.controller" />
Si j'avis mis "fr.acme.service" en premier c'est sur l'autowire de celui ci qui planterais (et non plus avec sessionFactory comme l'ordre inscrit ci dessus)
Le probleme n'est pas SessionFactory mais l'injection)
et enfin, la config .xml
ça fait des heures et des heures que je cherche et j'ai mal à la tête
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
17
18
19
20
21
22
23
24
25 <context:property-placeholder location="classpath:jdbc.properties" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:hibernate.cfg.xml" /> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>![]()
Partager