bonjour,
Je développe une application web avec spring mvc 4. pour la partie Dao, j'ai ajouté une classe générique GenericDAO :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class GenericDAO<T> {
 
	@PersistenceContext
	private EntityManager entityManager;
 
	private Class<T> parametrizedType;
 
	public GenericDAO(Class<T> parametrizedType) {
		this.parametrizedType = parametrizedType;
	}
 
	public EntityManager getEntityManager() {
		return entityManager;
	}
 
	public List<T> executeQuery(String query){
		TypedQuery<T> typedQuery = entityManager.createQuery(query, parametrizedType);
		List<T> result = typedQuery.getResultList();
		return result;
	}
 
	public List<T> listAll(){
		List<T> result = getEntityManager().createQuery("Select t From " + parametrizedType.getSimpleName() + " t", parametrizedType).getResultList();
		return result;
	}
 
	public T getById(Object id){
		return getEntityManager().find(parametrizedType, id);
	}
 
	@SuppressWarnings("unchecked")
	public List<T> executeNativeQuery(String query){
		List<T> result = entityManager.createNativeQuery(query, parametrizedType).getResultList();
		return result;
	}
 
	public List<T> executeNamedQuery(String query){
		List<T> result = entityManager.createNamedQuery(query, parametrizedType).getResultList();
		return result;
	}
 
	@Transactional
	public void save(T entity){
		entityManager.persist(entity);
	}
 
	@Transactional
	public void modify(T entity){
		entityManager.merge(entity);
	}
 
	@Transactional
	public T find(Object id){
		if(id!=null){
			return entityManager.find(this.parametrizedType, id);
		}
		return null;
	}
 
	@Transactional
	public void delete(Object id){
		T t = find(id);
		if(t!=null){
			entityManager.remove(t);
		}
	}
}
Dans mes services, si je fais la déclaration :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
@Autowired
	@Qualifier(value="partenaireDao")
	private GenericDAO<VscPartenaire> partenaireDao;
J'obtient l'erreur suivante :
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency ....: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=partenaireDao)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1463)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1094)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
par contre si je développe une classe dao qui hérite de GenericDao :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
@Repository("partenaireDao")
public class PartenaireDao extends GenericDAO<VscPartenaire> {
 
	public PartenaireDao() {
		super(VscPartenaire.class);
	}
}
l'erreur ne se reproduit pas.

Avez vous une idée de ce qui ne marche pas avec mon GenericDao ?

Merci.