有办法简化spring中的事务管理配置吗
java代码: |
<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用同样的事务策略有办法简化这样的配置么?[/code]
xml代码: |
<!-- 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> |
Readonly 写道: | ||
|
这样的话baseTxProxy也可能被实例化。是不是加上abstract="true"属性,把baseTxProxy只是当作一个模板比较好?因为只需要itemservice这个bean。
java代码: |
<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> |
这样也是可以的!