Spring 5 : UnsatisfiedDependencyException: Error creating bean
Salut les amis,
J'ai un problème de dépendances, voici l'erreur :
Code:
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:
1 2 3 4 5 6
|
@Repository
public class UserDaoImp implements UserDao {
@Autowired
private SessionFactory sessionFactory; |
UserService :
Code:
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:
1 2 3 4 5 6 7
|
@Controller
public class UserController {
@Autowired(required=true)
private UserService userService;
... |
et les scan :
Code:
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:
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 :aie: