IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Erreur "No qualifying bean of type found for dependency" [Framework]


Sujet :

Spring Java

  1. #1
    Membre du Club
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 42
    Points
    42
    Par défaut Erreur "No qualifying bean of type found for dependency"
    Bonjour,

    Je suis en train de réaliser le tutoriel suivant : http://rpouiller.developpez.com/tuto...ing-hibernate/ et je suis bloqué à l'étape des injections de dépendances.

    Lorsque je démarre mon serveur Tomcat, j'ai ce message d'erreur :

    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
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'afficherListeCoursesController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kdefives.tp.services.IServiceListeCourses com.kdefives.tp.controller.AfficherListeCoursesController.service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.kdefives.tp.services.IServiceListeCourses] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
    	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kdefives.tp.services.IServiceListeCourses com.kdefives.tp.controller.AfficherListeCoursesController.service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.kdefives.tp.services.IServiceListeCourses] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
    	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    	... 22 more
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.kdefives.tp.services.IServiceListeCourses] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
    	... 24 more
    J'ai relu plusieurs fois et recherché sur le net ce qui pose problème mais je bloque sur ce point. Je pense avoir exactement les mêmes classes que dans le tutoriel donc je ne vois pas ce qui cloche. Pouvez-vous m'aider svp ?
    La seule différence est que j'utilise une base de données MySQL et les dernière version RELEASE pour Spring, Hibernate, JSTL etc...

    Merci d'avance !


    Pour info, voici mes classes Java, en principe c'est exactement les mêmes que celles dans le tutoriel:

    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
    package com.kdefives.tp.bean;
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
     
    @Entity
    @Table(name="LISTECOURSES")
    public class Course {
     
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        @Column(name="IDOBJET")
        private Integer id;
        private String libelle;
        private Integer quantite;
     
        public Integer getId() {
            return id;
        }
     
        public void setId(final Integer pId) {
            id = pId;
        }
     
        public String getLibelle() {
            return libelle;
        }
     
        public void setLibelle(final String pLibelle) {
            libelle = pLibelle;
        }
     
        public Integer getQuantite() {
            return quantite;
        }
     
        public void setQuantite(final Integer pQuantite) {
            quantite = pQuantite;
        }
    }
    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
    package com.kdefives.tp.controller;
     
    import java.util.List;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
     
    import com.kdefives.tp.bean.Course;
    import com.kdefives.tp.services.IServiceListeCourses;
     
     
     
    @Controller
    @RequestMapping(value="/afficherListeCourses")
    public class AfficherListeCoursesController {
     
        @Autowired
        private IServiceListeCourses service;
     
        @RequestMapping(method = RequestMethod.GET)
        public String afficher(ModelMap pModel) {
            final List<Course> lListeCourses = service.rechercherCourses();
            pModel.addAttribute("listeCourses", lListeCourses);
            return "listeCourses";
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package com.kdefives.tp.dao;
     
    import java.util.List;
     
    import com.kdefives.tp.bean.Course;
     
    public interface IListeCoursesDAO {
        List<Course> rechercherCourses();
    }
    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
    package com.kdefives.tp.dao;
     
    import java.util.List;
     
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.TypedQuery;
    import javax.persistence.criteria.CriteriaBuilder;
    import javax.persistence.criteria.CriteriaQuery;
    import javax.persistence.criteria.Root;
     
    import org.springframework.stereotype.Repository;
     
    import com.kdefives.tp.bean.Course;
     
    @Repository
    public class ListeCoursesDAO implements IListeCoursesDAO {
     
        @PersistenceContext
        private EntityManager entityManager;
     
    	public List<Course> rechercherCourses() {
            final CriteriaBuilder lCriteriaBuilder = entityManager.getCriteriaBuilder();
     
            final CriteriaQuery<Course> lCriteriaQuery = lCriteriaBuilder.createQuery(Course.class);
            final Root<Course> lRoot = lCriteriaQuery.from(Course.class);
            lCriteriaQuery.select(lRoot);
            final TypedQuery<Course> lTypedQuery = entityManager.createQuery(lCriteriaQuery);
     
            return lTypedQuery.getResultList();
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package com.kdefives.tp.services;
     
    import java.util.List;
     
    import com.kdefives.tp.bean.Course;
     
    public interface IServiceListeCourses {
        List<Course> rechercherCourses();
    }
    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
    package com.kdefives.tp.services;
     
    import java.util.List;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
     
    import com.kdefives.tp.bean.Course;
    import com.kdefives.tp.dao.IListeCoursesDAO;
     
     
    @Service
    public class ServiceListeCourses implements IServiceListeCourses {
     
        @Autowired
        private IListeCoursesDAO dao;
     
        @Transactional(readOnly=true)
        public List<Course> rechercherCourses() {
            return dao.rechercherCourses();
        }
    }

  2. #2
    Membre du Club
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Désolé du double post mais c'est pour différencier le problème de la solution pour ceux qui auraient le même problème.

    J'ai réussi à trouver la solution. Le problème était que je n'avais pas déclarer mes packages dao et services dans mon fichier servlet-dispatch.xml

    Du coup j'en ai déduit que chaque package qui contient des classes utilisant des annotations du framework Spring doit être déclaré dans ce fichier XML ! ^^

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Même probléme
    J'ai la même erreur peux tu communiquer le
    servlet-dispatcher.xml
    cela pourrait m'aider!!!!

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour et Bienvenue AnyDevelop.

    Ouvre une nouvelle discussion, poste ton code et les messages d'erreurs en utilisant les balises [CODE] et [QUOTE] pour qu'on puisse t'aider.

    A+.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par AnyDevelop Voir le message
    J'ai la même erreur peux tu communiquer le
    servlet-dispatcher.xml
    cela pourrait m'aider!!!!
    J'ai eu le même problème , et après plusieurs heures de recherche ,

    j'ai rajouté une annotation Spring 3 qui permet de declarer le Bean sans passer par le fichier XML
    @Controller
    @RequestMapping(value="/afficherListeCourses")
    @Configuration
    @ComponentScan("com.dev.controller") // No need to include component-scan in xml
    public class AfficherListeCoursesController {.......

    }

    IMPORTANT: j'ai juste fait un MAven update sur mon projet et ça a reglé le problème .

    j’espère que ça va t'aider .

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 1
    Points : 3
    Points
    3
    Par défaut
    j'ai le même erreur prière de m'indiquer comment modifier le servlet-dispatcher
    merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/04/2015, 15h30
  2. Erreur "No saved view state could be found for the view identifier"
    Par hayatbel dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 19/06/2014, 15h49
  3. Réponses: 7
    Dernier message: 19/08/2013, 08h33
  4. Réponses: 5
    Dernier message: 31/08/2012, 09h23
  5. [JSF] Erreur "bean of type null"
    Par vallica dans le forum JSF
    Réponses: 5
    Dernier message: 27/03/2006, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo