锁定老帖子 主题:有办法简化spring中的事务管理配置吗
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-03
<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> 系统中有多个service,但我们的事务策略大部分都是一样的,难道非要每个service都要写一个这样的代理配置么?多个service用同样的事务策略有办法简化这样的配置么? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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这个属性阿,根本没有定义阿,我的配置文件在这里: <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> 是不是我的版本不够高阿,我的也是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这个属性阿,根本没有定义阿,我的配置文件在这里: <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> 是不是我的版本不够高阿,我的也是1.1.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> |
|
返回顶楼 | |
发表时间:2004-12-06
de3light,
成功,thx 这下倒是省事情了,不用每个bean都配置事务了 |
|
返回顶楼 | |
发表时间:2004-12-08
<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> 这样也是可以的! |
|
返回顶楼 | |