读书人

帮手看下SSH,该如何解决

发布时间: 2012-03-31 13:13:26 作者: rapoo

帮手看下SSH
<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="usersDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>

<bean id="usersDAO" class="my.dao.hibernate.UsersDAO"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="usersManager" class="my.service.impl.UsersManager"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="usersDAO">
<ref bean="userDAOProxy" />
</property>
</bean>

请问各位:spring的事务代理是这样子用的吗??

报错:
Failed to convert property value of type [$Proxy3] to required type [my.dao.hibernate.UsersDAO] for property 'usersDAO'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy3] to required type [my.dao.hibernate.UsersDAO] for property 'usersDAO': no matching editors or conversion strategy found



[解决办法]
你的my.dao.hibernate.UsersDAO这个bean需要设置属性proxyTargetClass为true,这样产生的代理对象才会instanceof原来的类。
在事务中加上下面语句
<property name="proxyTargetClass" >
<value>true</value>
</property>
表面proxy代理的是类而不是接口。

读书人网 >Java Web开发

热点推荐