Spring基于tx/aop声明式事务配置

一、引入aop/tx命名空间

<beans

    xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

    http://www.springframework.org/schema/aop

    http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

    http://www.springframework.org/schema/tx

    http://www.springframework.org/schema/tx/spring-tx-2.0.xsd ">

 

二、基于tx/aop配置

<!-- 事务管理器 -->

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory">

            <ref bean="sessionFactory"/>

        </property>

    </bean>

    <!-- 通过aop定义事务增强切面 -->

    <aop:config>

        <aop:pointcut id="serviceMethod" expression="execution(* com.cj.transaction.service.*.*(..))"/>

        <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/>

    </aop:config>

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

        <tx:attributes>

            <tx:method name="find*" read-only="false"/>

            <tx:method name="add*" rollback-for="Exception"/>

        </tx:attributes>

    </tx:advice>

 

expression="execution(* com.cj.transaction.service.*.*(..))"中几个通配符的含义:

第一个 * —— 通配任意返回值类型
第二个 * —— 通配com.cj.transaction.service下的任意class
第三个 * —— 通配
com.cj.transaction.service下的任意class的任意方法
第四个 .. —— 通配方法可以有0个或多个参数

 

注意:第一个*后面有一个空格

原文地址:https://www.cnblogs.com/feifeihu/p/2640427.html