|
锁定老贴子 主题:有办法简化spring中的事务管理配置吗
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
时间:2004-12-03
[code:1]<bean id="proxyService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref local="myTransactionManager"/></property>
<property name="target">
<ref local="itemService"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="itemService" class="com.xxx.services.IServiceImpl">
<property name="itemMasterDAO"><ref local="itemMasterDAO"/></property>
</bean>
[/code:1]
系统中有多个service,但我们的事务策略大部分都是一样的,难道非要每个service都要写一个这样的代理配置么?多个service用同样的事务策略有办法简化这样的配置么?[/code]
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2004-12-03
<!-- Transactional proxy for the services -->
<bean id="baseTxProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref bean="transactionManager"/></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="itemService" parent="baseTxProxy">
<property name="target">
<bean class="ItemServiceImpl" autowire="byName"/>
</property>
</bean>
|
|
| 返回顶楼 | |
|
时间:2004-12-03
感谢readonly大大,修改成功!!
不过以后少不了还要请教。呵呵 |
|
| 返回顶楼 | |
|
时间:2004-12-03
Readonly 写道
<!-- Transactional proxy for the services -->
<bean id="baseTxProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref bean="transactionManager"/></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="itemService" parent="baseTxProxy">
<property name="target">
<bean class="ItemServiceImpl" autowire="byName"/>
</property>
</bean>
这样的话baseTxProxy也可能被实例化。是不是加上abstract="true"属性,把baseTxProxy只是当作一个模板比较好?因为只需要itemservice这个bean。 |
|
| 返回顶楼 | |
|
时间:2004-12-03
看了一下文档, 原来abstract是这样用滴, hoho, 又学到一招......
|
|
| 返回顶楼 | |
|
时间:2004-12-03
1.11开始有的:)
|
|
| 返回顶楼 | |
|
时间:2004-12-06
我用readonly的方法不成功阿,
错误: 1.abstract属性没有定义 2.org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [com.bbs.service.imp.ForumServiceImp]: Property 'transactionManager' is not writable 怎么会去set这个属性阿,根本没有定义阿,我的配置文件在这里: [code:1] <bean id="TransactionProxyFactoryBean" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="ForumService" class="com.bbs.service.imp.ForumServiceImp" parent="TransactionProxyFactoryBean"> <property name="forumDAO"> <ref local="ForumDAO" /> </property> </bean> [/code:1] 是不是我的版本不够高阿,我的也是1.1.1阿 |
|
| 返回顶楼 | |
|
时间:2004-12-06
general 写道 我用readonly的方法不成功阿,
错误: 1.abstract属性没有定义 2.org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [com.bbs.service.imp.ForumServiceImp]: Property 'transactionManager' is not writable 怎么会去set这个属性阿,根本没有定义阿,我的配置文件在这里: [code:1] <bean id="TransactionProxyFactoryBean" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="ForumService" class="com.bbs.service.imp.ForumServiceImp" parent="TransactionProxyFactoryBean"> <property name="forumDAO"> <ref local="ForumDAO" /> </property> </bean> [/code:1] 是不是我的版本不够高阿,我的也是1.1.1阿 配置好像有问题,试试这个 [code:1] <bean id="TransactionProxyFactoryBean" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="ForumService" parent="TransactionProxyFactoryBean"> <property name="target"> <bean class="ForumServiceImp"> </property> </bean> <bean id="ForumServiceImp" class="com.bbs.service.imp.ForumServiceImp"> <property name="forumDAO"> <ref local="ForumDAO" /> </property> </bean> [/code:1] |
|
| 返回顶楼 | |
|
时间:2004-12-06
de3light,
成功,thx 这下倒是省事情了,不用每个bean都配置事务了 |
|
| 返回顶楼 | |
|
时间:2004-12-08
[code:1]<bean id="TransactionProxyFactoryBean" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="ForumService" parent="TransactionProxyFactoryBean"> <property name="target"> <bean class="com.bbs.service.imp.ForumServiceImp"> <property name="forumDAO"> <ref local="ForumDAO" /> </property> </bean> </property> </bean> [/code:1] 这样也是可以的! |
|
| 返回顶楼 | |











