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 :
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();
   }
}
controlleur :
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 :
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" />
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.
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
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>
ça fait des heures et des heures que je cherche et j'ai mal à la tête