丿皓月 2013-11-06 10:35 采纳率: 0%
浏览 1406

org.springframework.beans.factory.BeanCreationException

applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">









<bean id="optlogger" class="com.log.OptLogger"></bean>

<aop:config>
    <aop:pointcut expression="within(com.dao.*)" id="servicePointcut"/>
        <aop:aspect id="optLoggerAspect" ref="optlogger">
        <aop:around method="logger" pointcut-ref="servicePointcut"/>
    </aop:aspect>
 </aop:config>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="mappingResources">
        <list> 
            <value>com/entity/User.hbm.xml</value> 
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">
                org.hibernate.dialect.MySQLDialect
            </prop>
        </props>
    </property>
</bean>
<bean id="hibernateuserdao" class="com.dao.HibernateUserDao" init-method="">
    <property name="sessionfactory" ref="sessionFactory"></property>
</bean>
</beans>

HibernateUserDao文件

public class HibernateUserDao extends HibernateDaoSupport implements UserDao{
SessionFactory sessionfactory;

public SessionFactory getSessionfactory() {
    return sessionfactory;
}

public void setSessionfactory(SessionFactory sessionfactory) {
    this.sessionfactory = sessionfactory;
}

public int count() {
    // TODO Auto-generated method stub
    String sql="select count(*) from user";
    List list=this.getHibernateTemplate().find(sql);
    return Integer.valueOf(list.get(0).toString());
}

public void delete(int id) {
    // TODO Auto-generated method stub
    User user=findByID(id);
    this.getHibernateTemplate().delete(user);
}

public List<User> findAll() {
    // TODO Auto-generated method stub
    String sql="from user";

    return this.getHibernateTemplate().find(sql);
}

public User findByID(int id) {
    // TODO Auto-generated method stub
    String sql="from user where id=?";
    List list=this.getHibernateTemplate().find(sql,new Object[]{id});
    if(!list.isEmpty()){
        return (User)list.get(0);       }

    return null;
}

public void save(User user) {
    // TODO Auto-generated method stub
    this.getHibernateTemplate().save(user);
}

public void update(User user) {
    // TODO Auto-generated method stub
    this.getHibernateTemplate().update(user);
}

}
报错 :

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateuserdao' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
at com.test.Test1.main(Test1.java:20)
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:117)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 12 more

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-11-23 22:52
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。

    该回答引用ChatGPT-3.5,仅为您提供参考,不保证完全正确
    报错信息显示是在创建名为'hibernateuserdao'的bean时出现了问题。具体的错误信息是'sessionFactory' or 'hibernateTemplate' is required,意味着在创建HibernateUserDao bean时,Spring发现缺少必需的sessionFactoryhibernateTemplate


    在你的applicationContext.xml文件中,你已经配置了sessionFactory bean:

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 配置省略 -->
    </bean>
    

    但是,在配置HibernateUserDao bean时,你没有指定hibernateTemplate。你可以通过以下方式之一来解决这个问题:

    1. 添加hibernateTemplate属性到HibernateUserDao bean的配置中

      <bean id="hibernateuserdao" class="com.dao.HibernateUserDao" init-method="">
          <property name="sessionfactory" ref="sessionFactory"></property>
          <property name="hibernateTemplate" ref="hibernateTemplate"></property>
      </bean>
      

      请注意,你需要确保在配置文件中还有一个hibernateTemplate bean 的定义。通常情况下,你可以这样定义:

      <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
          <property name="sessionFactory" ref="sessionFactory" />
      </bean>
      
    2. 使用HibernateDaoSupport提供的setSessionFactory方法设置sessionFactory属性

      HibernateUserDao类中,使用setSessionFactory方法设置sessionFactory属性:

      public class HibernateUserDao extends HibernateDaoSupport implements UserDao {
          // 省略其他代码
      
          public HibernateUserDao(SessionFactory sessionFactory) {
              setSessionFactory(sessionFactory);
          }
      
          // 省略其他代码
      }
      

      然后在applicationContext.xml中配置HibernateUserDao bean时,通过构造函数传递sessionFactory

      <bean id="hibernateuserdao" class="com.dao.HibernateUserDao">
          <constructor-arg ref="sessionFactory" />
      </bean>
      

    无论哪种方式,确保HibernateUserDao 在初始化时能够获取到sessionFactoryhibernateTemplate


    该回答引用NewBing,仅为您提供参考,不保证完全正确
    超出输入上限


    该回答引用文心大模型3.5,仅为您提供参考,不保证完全正确
    超出输入上限


    该回答引用讯飞星火认知大模型,仅为您提供参考,不保证完全正确
    这个报错是因为在HibernateUserDao类中,sessionFactoryhib这个报错是因为在HibernateUserDao类中,sessionFactoryhibernateTemplate没有被正确注入。你需要在HibernateUserDao类中添加这两个属性的setter方法,并在applicationContext.xml文件中将它们注入到HibernateUserDao`类的实例中。


    首先,在HibernateUserDao类中添加setter方法:

    public void setSessionfactory(SessionFactory sessionfactory) {
        this.sessionfactory = sessionfactory;
    }
    
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }
    

    然后,在applicationContext.xml文件中将它们注入到HibernateUserDao类的实例中:

    <bean id="hibernateuserdao" class="com.dao.HibernateUserDao">
        <property name="sessionfactory" ref="sessionFactory"></property>
        <property name="hibernateTemplate" ref="hibernateTemplate"></property>
    </bean>
    

    这样应该可以解决报错问题。


    该回答引用通义千问大模型,仅为您提供参考,不保证完全正确
    超出输入上限

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型