java - Bean创建异常

标签 java spring hibernate

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

<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)

我哪里出错了?

最佳答案

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)

错误信息非常清楚。打开您的 CaseTxDaoImpl 并确保其中有以下方法:

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

顺便说一句:

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

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

关于java - Bean创建异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092607/

相关文章:

java - 在Java中模拟构造函数重写?

java - RowCallbackHandler 与 JdbcTemplate 的流行

Spring security Ldap 从编码的 cookie 中获取用户名密码以进行身份​​验证

java - hibernate :无法删除|删除分离的实例

java - 使文件传输更高效 Java

用于解析 Latex 或 MathML 字符串的 Java 或 scala 库

hibernate - 扩展@NotEmpty 以接受其他类

java - 如何在PreparedStatement中使用自动生成的@Id?

允许 -/或 .作为日期内的分隔符

java - 抛出异常以在 API 中向用户传播响应消息是最佳实践吗?