有办法简化spring中的事务管理配置吗?

1:

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用同样的事务策略有办法简化这样的配置么?


2:

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>


3:

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。

4:

看了一下文档, 原来abstract是这样用滴, hoho, 又学到一招......

5:

我用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这个属性阿,根本没有定义阿,我的配置文件在这里:

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" class="com.bbs.service.imp.ForumServiceImp"
                parent="TransactionProxyFactoryBean">
                <property name="forumDAO">
                        <ref local="ForumDAO" />
                </property>
        </bean>



是不是我的版本不够高阿,我的也是1.1.1阿

6:

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这个属性阿,根本没有定义阿,我的配置文件在这里:

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" class="com.bbs.service.imp.ForumServiceImp"
                parent="TransactionProxyFactoryBean">
                <property name="forumDAO">
                        <ref local="ForumDAO" />
                </property>
        </bean>



是不是我的版本不够高阿,我的也是1.1.1阿


配置好像有问题,试试这个
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="ForumServiceImp">
        </property>
</bean>
<bean id="ForumServiceImp" class="com.bbs.service.imp.ForumServiceImp">
                <property name="forumDAO">
                        <ref local="ForumDAO" />
                </property>
        </bean>



7:

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、付费专栏及课程。

余额充值