【问题标题】:Bean creation exceptionBean 创建异常
【发布时间】:2012-10-26 18:44:33
【问题描述】:

我的应用程序上下文看起来像这样,

<bean id="caseTxBo" class="gov.case.rcp.bo.impl.caseTxBoImpl" >
            <property name="caseTxDao" ref="caseTxDao" />
    </bean>
    <bean id="caseTxDao" class="gov.case.rcp.dao.impl.caseTxDaoImpl" >
            <property name="sessionFactory" ref="sessionFactory" />

Action 类获取如下上下文:

ServletContext context = request.getSession().getServletContext();
     BeanFactory factory = WebApplicationContextUtils.
           getRequiredWebApplicationContext(context);
     CaseTxBOImpl caseTxBo = (

             caseTxBoImpl) factory.getBean("caseTxBo");

     List<caseTxPmt> errorVarList =       
     caseTxBo.getcaseTxDao().findAllcaseTx();

    model.put("caseTxList", caseTxList);

BOImpl 实现 Dao,DAOImpl 实现 Dao:

DaoImpl 有实现并返回 caseTxList。

但我得到一个 runTimeException 作为

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'caseTxBo' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'caseTxDao' while setting bean property 'caseTxDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'caseTxDao' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'sessionFactory' of bean class [gov.case.rcp.pp.dao.impl.CaseTxDaoImpl]: Bean property 'sessionFactory' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
follows:
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)

我哪里做错了?

【问题讨论】:

  • 您是否阅读了整个异常消息(根本原因就在最后)?您不理解消息的哪一部分?
  • setter的参数类型和getter的返回类型是否匹配?他们都匹配。

标签: java spring hibernate


【解决方案1】:

Bean 属性'sessionFactory' 不可写或具有无效的setter 方法。 setter 的参数类型是否与 getter 的返回类型匹配? 如下: 在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)

错误信息很清楚。打开你的CaseTxDaoImpl 并确保那里有以下方法:

public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

顺便说一句:

ServletContext context = request.getSession().getServletContext();
BeanFactory factory = WebApplicationContextUtils.
       getRequiredWebApplicationContext(context);
factory.getBean("caseTxBo")

是 Spring 的低级用法和反模式。你在使用任何网络框架吗?通常它们与 Spring 集成得很好。

【讨论】:

  • 是hibernatesession工厂吗?我的 DAOImpl 扩展了 JdbcDaoSupport。我是 Spring 集成的新手。我的应用程序遵循用于注入 bean 的 struts 框架和 spring 集成。它同时使用 JdbcDaoSupport 和 HibernateDaoSupport..但是这个 DaoImpl 使用 JdbcDaoSupport。
猜你喜欢
  • 2018-06-26
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多