Spring 事务配置实战(一):过滤无需事务处理的查询之类操作
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception"/>
<tx:method name="insert*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="update*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="save*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
</tx:attributes>
</tx:advice>
各标签配置可参考:tx:advice详解
Tips:
tx:method中name标明的方法为transactionManager管理的需要应用事务处理方法。
不过,不符name的方法,也会应用到事务。so,日志会有Don't need create transactionManager……提示。
去除上则消息,需要在AOP注入配置中过滤掉,如查询。
具体参考以下配置:
<aop:config>
<aop:pointcut id="pc" expression="(execution(* com.*.service..*(..)))
and !(execution(* com.*.service..*.check*(..)))
and !(execution(* com.*.service..*.find*(..)))
and !(execution(* com.*.service..*.list*(..)))
and !(execution(* com.*.service..*.get*(..)))" />
<aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />
</aop:config>
各标签配置可参考:aop:config详解
去除aop注入的service包及子包中,以find,get,list,check开头的方法。
如此,查询操作即可不需用到事务处理,也就没了Don't need create transactionManager……的提示。

浙公网安备 33010602011771号