严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file [D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyStrutsTest\WEB-INF\classes\applicationContext-daos.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.hoo.dao.impl.UserDao]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.hoo.dao.impl.UserDao.<init>()
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.hoo.dao.impl.UserDao]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.hoo.dao.impl.UserDao.<init>()
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:70)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958)
... 28 more
Caused by: java.lang.NoSuchMethodException: com.hoo.dao.impl.UserDao.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:65)
... 29 more
2012-3-8 11:08:04 org.apache.catalina.core.ApplicationContext log
信息: Set web app root system property: 'webapp.root' = [D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyStrutsTest\]
2012-3-8 11:08:04 org.apache.catalina.core.ApplicationContext log
信息: Initializing log4j from [D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyStrutsTest\WEB-INF\log4j.properties]
2012-3-8 11:08:04 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2012-3-8 11:08:04 org.apache.catalina.core.StandardContext start
严重: Context [/MyStrutsTest] startup failed due to previous errors
2012-3-8 11:08:04 org.apache.catalina.core.ApplicationContext log
信息: Shutting down log4j
2012-3-8 11:08:04 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2012-3-8 11:08:04 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2012-3-8 11:08:04 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2012-3-8 11:08:04 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/62  config=null
2012-3-8 11:08:04 org.apache.catalina.startup.Catalina start
信息: Server startup in 4662 ms

解决方案 »

  1.   

    你的“userDao”应该配置有问题,把你的applicationContext-daos.xml配置文件晒出来看看?
      

  2.   

    <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
    <!--
    <bean id="userDao" class="com.hoo.dao.impl.UserDao">
    <property name="sessionFactory" ref="sqlSessionFactory" />
    </bean>
      -->
          <!-- 通过扫描的模式,扫描目录在com/hoo/mapper目录下,所有的mapper都继承SqlMapper接口的接口, 这样一个bean就可以了
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.hoo.mapper"/>
            <property name="erInterface" value="com.hoo.mapper.SqlMapper"/>
        </bean>
        org.mybatis.spring.mapper.MapperFactoryBean
        -->
    <bean id="userDao" class="com.hoo.dao.impl.UserDao">
    <property name="sessionFactory" ref="sqlSessionFactory" />
    </bean>
    </beans>
    就配置这么一个dao啊第一次
      

  3.   

    把dao的配置文件弄出来看看,同时把userDao的实现也贴出来。
      

  4.   

    public class UserDao extends SqlSessionTemplate implements IUserDao {// public Integer deleteById(Integer userId) {
    // dao.setMapperClass(UserMapper.class);
    // user.setUserId(userId);
    // try {
    // dao.remove(user);
    // } catch (Exception e) {
    // // TODO Auto-generated catch block
    // e.printStackTrace();
    // }
    // return 1;
    // } public UserDao(SqlSessionFactory sqlSessionFactory) {
    super(sqlSessionFactory);
    // TODO Auto-generated constructor stub
    } public int findByCount(Page page) {
    return (Integer) this.selectOne("User.findByCount", page);
    }
    public List findByPage(Page page) {
    List list = null;
    return list;
    } //public Object saveUser(User user) {
    // return getSqlMapClientTemplate().insert("User.save", user);
    //} public Integer update(User user) throws Exception {
    return 1;
    } public User login(User user) {
    return user;
    } public List findByExample(User user) {
    return (List) user;
    } @Override
    public Object saveUser(User user) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public Integer deleteById(Integer userId) {
    // TODO Auto-generated method stub
    return null;
    }}
      

  5.   

    你在配置文件中,明明用的<bean id="userDao" class="com.hoo.dao.impl.UserDao">
        <property name="sessionFactory" ref="sqlSessionFactory" />
    </bean>
    這個是setter注入,但是在UserDao中卻是
    public UserDao(SqlSessionFactory sqlSessionFactory) {
    super(sqlSessionFactory);
    // TODO Auto-generated constructor stub
    }構造器注入,怎麽可能注入進去呢?要麽改配置文件從setter改為constructor,要麽改UserDao得注入方式為setter。
      

  6.   

    楼上的哥们,我也这个问题,不过我是扫描注解的方式注入的,@Inject注入的话,在启动就报错,跟你一样,你最后是怎么改的?包括xml,和代码,能都贴出来么?搞了2天了,头疼,谢谢啊