spring事务控制–xml配置与annotation注解 优先级对比

  • Post author:
  • Post category:其他


楼主下午看公司项目配置,发现项目中关于事物的配置,配置了两种,一个是xml配置,另一种是annotation配置。特意比较下两种的优先级。

1,xml配置事物

<aop:config>



<aop:pointcut id=”appService” expression=”execution(* com.clife.commons.base.service.chealth.*.*.*(..))”/>



<aop:advisor advice-ref=”txAdvice” pointcut-ref=”appService”/>



</aop:config>



<tx:advice id=”txAdvice” transaction-manager=”transactionManager”>



<tx:attributes>



<tx:method name=”select*” read-only=”true”/>



<tx:method name=”find*” read-only=”true”/>



<tx:method name=”get*” read-only=”true”/>



<tx:method name=”update*” propagation=”REQUIRED”/>



<tx:method name=”insert*” propagation=”REQUIRED”/>



<tx:method name=”save*” propagation=”REQUIRED”/>



<tx:method name=”add*” propagation=”REQUIRED”/>



<tx:method name=”del*” propagation=”REQUIRED”/>



<tx:method name=”*”/>



</tx:attributes>



</tx:advice>



<bean id=”transactionManager” class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>



<property name=”dataSource” ref=”dataSource” />



</bean>

2,注解配置事物

<aop:aspectj-autoproxy/>

<bean id=”transactionManager” class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>



<property name=”dataSource” ref=”dataSource” />



</bean>



<tx:annotation-driven transaction-manager=”transactionManager” proxy-target-class=”true” />

对应的service实现类的方法上写@Transactional(readOnly = false)  楼主的这个方法是向数据库插入

二者进行比较的方法:<tx:method name=”insert*” propagation=”REQUIRED”/>  —-》》》<tx:method name=”insert*” read-only=”true” propagation=”REQUIRED”/>

xml配置成只读,注解配置成read-only=”false”,这时数据并不能插入数据库


二者配置对换后,可以插入。

3,为什么会这样?



版权声明:本文为m760741876原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。