Spring管理事务的优点有很多,这里不细说直接进入主题。

一:使用配置的方式进行管理

1.事务管理器

事务的管理 离不开数据源  大家需要将数据源注入才可进行事务的管理

<!--事务管理器-->
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

 2.配置通知

              <tx:method>中以你自己用的方法增删改查的前缀进行配置即可

           

Isolation:隔离级别      Propagetion:传播行为{推荐选择REQUIRED}            Read-only:是否只读

事务的传播行为扩展:

1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。
2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘
3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。
4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。
5、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
6、PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
7、PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

<!--通知-->
    <tx:advice id="MyAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="get*" propagation="REQUIRED" read-only="true" isolation="DEFAULT"/>
            <tx:method name="add*" propagation="REQUIRED" read-only="false" isolation="DEFAULT"/>
            <tx:method name="Update*" propagation="REQUIRED" read-only="false" isolation="DEFAULT"/>
            <tx:method name="Del*" propagation="REQUIRED" read-only="false" isolation="DEFAULT"/>
        </tx:attributes>
    </tx:advice>

3.配置切点(也就是你要将事务在哪里进行管理,当然 根据前辈们的习惯都是service层进行管理了)

<aop:pointcut>这是切点  指定要在所有的service实现类进行管理事务

*.ServiceImpl.*(..)   :

                                第一个*号即咱们经常写的ServiceImpl的前缀名 

                                第二个*号是对所有的方法名称都作为管理 

                                第三个(..)代表方法的参数

<!--Aop管理事务-->
    <aop:config>
        <aop:pointcut id="myPc" expression="execution(* cn..itxwl.service.impl.*ServiceImpl.*(..))"></aop:pointcut>
        <aop:advisor advice-ref="MyAdvice" pointcut-ref="myPc"></aop:advisor>
    </aop:config>

 到此Spring以配置的方式管理事务就OK了

二·注解的方式

首先要在Spring配置文件中开启注解(扫描包下的所有注解 ---相当于你的主包)

<!--扫描注解-->
        <context:component-scan base-package="cn.itxwl"></context:component-scan>

然后配置事务管理器

<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

 接下来事务的管理就要在代码里面进行添加

第一种方式:(在类名上面添加覆盖类中所有的方法都具有事务的管理)

例如(不过一般不用书写后面括号里面的配置,想加也可以不加也行)

@Transactional(propagation=REQUIRED read-only=true isolation=DEFAULT)

第二种方式: 在方法名上面进行事务配置和上面一样。

由此 Spring对事务的管理即配置就OK了  有什么不足之处希望各位同道中人给与建议,感谢。