org.springframework.beans.factory.BeanCreationException: Fout bij maken van bean met naam ‘MyController’:

Ik ben bezig met de lente + winterslaaptoepassing. Wanneer ik de applicatie op de Tomcat-server uitvoer, krijg ik enkele uitzonderingen.

INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'appServlet-servlet': startup date [Sat May 17 19:51:03 CEST 2014]; parent: Root WebApplicationContext
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/inscription],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.gestEtu.project.controller.CompteController.hello(java.lang.String,java.lang.String,java.lang.String,org.springframework.ui.Model)
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.gestEtu.project.controller.HomeController.home(java.util.Locale,org.springframework.ui.Model)
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.gestEtu.project.model.service.CompteServiceImp com.gestEtu.project.controller.CompteController.compteServ; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteServiceImp': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.gestEtu.project.model.service.CompteServiceImp.setCompteDAO(com.gestEtu.project.model.dao.CompteDAOHib); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteDAOHib' defined in file [C:\Users\zouhair\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\TESTER\WEB-INF\classes\com\gestEtu\project\model\dao\CompteDAOHib.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.gestEtu.project.model.dao.CompteDAOHib]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.gestEtu.project.model.dao.CompteDAOHib.<init>()
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1189)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1103)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.gestEtu.project.model.service.CompteServiceImp com.gestEtu.project.controller.CompteController.compteServ; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteServiceImp': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.gestEtu.project.model.service.CompteServiceImp.setCompteDAO(com.gestEtu.project.model.dao.CompteDAOHib); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteDAOHib' defined in file [C:\Users\zouhair\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\TESTER\WEB-INF\classes\com\gestEtu\project\model\dao\CompteDAOHib.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.gestEtu.project.model.dao.CompteDAOHib]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.gestEtu.project.model.dao.CompteDAOHib.<init>()
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
    ... 27 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteServiceImp': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.gestEtu.project.model.service.CompteServiceImp.setCompteDAO(com.gestEtu.project.model.dao.CompteDAOHib); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compteDAOHib' defined in file [C:\Users\zouhair\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\TESTER\WEB-INF\classes\com\gestEtu\project\model\dao\CompteDAOHib.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.gestEtu.project.model.dao.CompteDAOHib]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.gestEtu.project.model.dao.CompteDAOHib.<init>()
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)
    at org.springframework.be   

root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- Root Context: defines shared resources visible to all other web components -->
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        p:location="/WEB-INF/jdbc.properties" />
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}" />
    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mappingResources">
            <list>
                <value>com/gestEtu/project/model/bo/Utilisateur.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Compte.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Message.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Groupe.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Etudiant.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Fichelecture.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Document.hbm.xml</value>
                <value>com/gestEtu/project/model/bo/Commentaire.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>
    <!-- Transaction Manager -->
    <bean id="txManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean> 
</beans>

servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />
    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />
    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>
    <context:component-scan base-package="com.gestEtu.project" />   
</beans:beans>

CompteController.java

package com.gestEtu.project.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.gestEtu.project.model.bo.Compte;
import com.gestEtu.project.model.service.CompteServiceImp;
@Controller
public class CompteController {
    @Autowired
    private CompteServiceImp compteServ;
    // @Autowired
    // public CompteController(CompteServiceImp compteServ) {
    // this.compteServ=compteServ;
    // }
    //
    @RequestMapping(value = "/inscription")
    public String hello(
            @RequestParam(value = "login", required = false, defaultValue = "zouhair") String login,
            @RequestParam(value = "password", required = false, defaultValue = "pass") String password,
            @RequestParam(value = "profil", required = false, defaultValue = "Etudiant") String profil,
            Model model) {
        int id = 1;
        Compte compte = new Compte(id, login, password, profil);
        compteServ.ajouterCompte(compte);
        model.addAttribute("inscription", compte);
        return "addCompte";
    }
}

compteService

package com.gestEtu.project.model.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import com.gestEtu.project.model.bo.Compte;
import com.gestEtu.project.model.bo.Utilisateur;
import com.gestEtu.project.model.dao.CompteDAOHib;
@Service
@Transactional(readOnly = true)
public class CompteServiceImp implements CompteService {
    private CompteDAOHib compteDAO;
    @Autowired
    public void setCompteDAO(CompteDAOHib compteDAO) {
        this.compteDAO = compteDAO;
    }
    @Override
    public void ajouterCompte(Compte compte) {
        compteDAO.ajouterCompte(compte);
    }
    @Override
    public List<Compte> getComptes() {
        return compteDAO.getComptes();
    }
    @Override
    public Compte findCompteByLogin(String login) {
        return compteDAO.findCompteByLogin(login);
    }
    @Override
    public void ajouterUtilisateur(Compte compte, Utilisateur utilisateur) {
        this.ajouterCompte(compte);
    }
    @Override
    public Utilisateur getUtilisateurById(int id) {
        return null;
    }
    @Override
    public List<Utilisateur> getUtilisateurs() {
        return null;
    }
}

Kan iemand dit helpen om dit op te lossen?

CompTTEAOHIB

package com.gestEtu.project.model.dao;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.gestEtu.project.model.bo.Compte;
@Repository
@Transactional(propagation=Propagation.REQUIRED)
public class CompteDAOHib extends HibernateDaoSupport implements CompteDAO {
    public CompteDAOHib(SessionFactory sessionFactory) {
        setSessionFactory(sessionFactory);
    }
    @Override
    public void ajouterCompte(Compte compte) {
        getHibernateTemplate().saveOrUpdate(compte);
    }
    @Override
    public List<Compte> getComptes() {
        try{
            return (List<Compte>) getHibernateTemplate().find("from compte")
                .iterator();
        }catch (Exception e) {
            return null;
        }
    }
    @Override
    public Compte findCompteByLogin(String login) {
        if ((login == null) || (login == "")) {
            return null;
        } else
            try {
                return (Compte) getHibernateTemplate()
                        .find("from Compte c where c.login = ?", login)
                        .iterator().next();
            } catch (Exception e) {
                return null;
            }
    }
}

CompteService-code

package com.gestEtu.project.model.service;
import java.util.List;
import com.gestEtu.project.model.bo.Compte;
import com.gestEtu.project.model.bo.Utilisateur;
public interface CompteService {
    public void ajouterCompte(Compte compte);
    public List<Compte> getComptes();
    public Compte findCompteByLogin(String login);
    public List<Utilisateur> getUtilisateurs();
    public Utilisateur getUtilisateurById(int id);
    public void ajouterUtilisateur(Compte compte, Utilisateur utilisateur);
}

Antwoord 1, autoriteit 100%

Gekopieerd van de stacktrace:

BeanInstantiationException: kan bean-klasse niet instantiëren [com.gestEtu.project.model.dao.CompteDAOHib]: geen standaardconstructor gevonden; geneste uitzondering is java.lang.NoSuchMethodException: com.gestEtu.project.model.dao.CompteDAOHib.<init>()

Standaard zal Spring proberen om beans te instantiëren door een standaard (no-arg) constructor aan te roepen. Het probleem in jouw geval is dat de implementatie van de CompteDAOHibeen constructor heeft met een SessionFactory-argument. Door de annotatie @Autowiredtoe te voegen aan een constructor, zal Spring proberen een bean van het overeenkomende type te vinden, SessionFactoryin jouw geval, en dit als een constructorargument op te geven, bijvoorbeeld

@Autowired
public CompteDAOHib(SessionFactory sessionFactory) {
    // ...
}

Antwoord 2, autoriteit 36%

Ik heb een soortgelijke foutmelding gekregen en wil deze graag met u delen. misschien helpt het iemand.

Als je EntityManagerFactorywilt gebruiken om een EntityManagerte krijgen, zorg er dan voor dat je het volgende gebruikt:

<persistence-unit name="name" transaction-type="RESOURCE_LOCAL">

en niet:

<persistence-unit name="name" transaction-type="JPA">

in persistance.xml

project opschonen en opnieuw opbouwen, dat zou moeten helpen.


Antwoord 3, autoriteit 7%

Uitzondering geeft duidelijk het probleem aan.

CompteDAOHib: No default constructor found

Voor de lente om je boon te instantiëren, moet je een lege constructor opgeven voor je klasse CompteDAOHib.


Antwoord 4, autoriteit 7%

Verander van @Controller naar @Service naar CompteController en
voeg @Service-annotatie toe aan CompteDAOHib.
Laat het me weten als je nog steeds met dit probleem wordt geconfronteerd.


Antwoord 5, autoriteit 7%

Als er niets gebeurt, zelfs als je alle benodigde annotaties hebt toegevoegd, probeer dan deze afhankelijkheid toe te voegen aan je pom.xml, ik had net hetzelfde probleem en heb het opgelost door deze hier toe te voegen:

p>

<dependency>
   <groupId>commons-configuration</groupId>
   <artifactId>commons-configuration</artifactId>
   <version>1.9</version>
</dependency>

Antwoord 6, autoriteit 7%

org.springframework.beans.factory.BeanCreationException: fout bij het maken van bean met de naam ‘MyController’

Zorg ervoor dat u ojdbc14.jarheeft toegevoegd aan uw bibliotheek.

Gebruik voor oracle 11g ojdbc6.jar.


Antwoord 7

Ik gebruikte Spring op NetBeans IDE en had dat probleem ook, blijkbaar ben ik gewoon vergeten de MySQL JDBC Driver-bibliotheek toe te voegen en het lost mijn probleem op.

Other episodes