有办法简化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 写道:
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>


这样的话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>



这样也是可以的!










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值