严重: 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 'userService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [$Proxy0] to required type [ht.zc.dao.UserDAO] for property 'userDAO'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy0] to required type [ht.zc.dao.UserDAO] for property 'userDAO': no matching editors or conversion strategy found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1303)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
at java.security.AccessController.doPrivileged(Native Method)
已经4天了,这个问题还没搞懂,就是事务配置的过程中问题,我的项目大致格式:DAO继承HibernateDaoSupport,service和action都是注入想对应的DAO和service,
下面是applicationContext.xml的配置:
<!--改成hinernateSsessFactory,也不行-->
<bean id="userService" class="ht.zc.service.UserService">
<property name="userDAO" ref="userDao" />
</bean>
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
tx:attributes
/tx:attributes
/tx:advice
aop:config
expression="execution(* ht.zc.dao.*.*(..))" />
/aop:config
[b]问题补充:[/b]
换成sessionFactory也没用,这些事务配置都是没什么变化,2位提供的方案没用,不知道是不是和这个有关系:Failed to convert property value of type [$Proxy0] to required type [ht.zc.dao.UserDAO] for property 'userDAO'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy0] to required type [ht.zc.dao.UserDAO] for property 'userDAO': no matching editors or conversion strategy found
[code="xml"]
/tx:advice
aop:config
expression="[color=red]execution(* ht.zc.dao.*.*(..))[/color]" />
/aop:config
[/code]
事务一般是配置在service层的,你在dao 可能导致传给dao的是一个proxy对象
[code="xml"]
[/code]
DAO应该引用sessionFactory呢 异常中说Error setting property values
这个是我的,正常运行中
[code="xml"]<?xml version="1.0" encoding="UTF-8"?>
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">
<!-- 配置sessionFactory -->
classpath:hibernate.cfg.xml
<!-- 配置事务管理器 -->
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="a*" propagation="REQUIRED" />
<tx:method name="b*" propagation="REQUIRED" />
<tx:method name="c*" propagation="REQUIRED" />
<tx:method name="d*" propagation="REQUIRED" />
<tx:method name="e*" propagation="REQUIRED" />
<tx:method name="f*" propagation="REQUIRED" />
<tx:method name="g*" propagation="REQUIRED" />
<tx:method name="h*" propagation="REQUIRED" />
<tx:method name="i*" propagation="REQUIRED" />
<tx:method name="j*" propagation="REQUIRED" />
<tx:method name="k*" propagation="REQUIRED" />
<tx:method name="l*" propagation="REQUIRED" />
<tx:method name="m*" propagation="REQUIRED" />
<tx:method name="n*" propagation="REQUIRED" />
<tx:method name="o*" propagation="REQUIRED" />
<tx:method name="p*" propagation="REQUIRED" />
<tx:method name="q*" propagation="REQUIRED" />
<tx:method name="r*" propagation="REQUIRED" />
<tx:method name="s*" propagation="REQUIRED" />
<tx:method name="t*" propagation="REQUIRED" />
<tx:method name="u*" propagation="REQUIRED" />
<tx:method name="v*" propagation="REQUIRED" />
<tx:method name="w*" propagation="REQUIRED" />
<tx:method name="x*" propagation="REQUIRED" />
<tx:method name="y*" propagation="REQUIRED" />
<tx:method name="z*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置哪些类的哪些方法使用事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.press.service.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
</aop:config>
[/code]