Spring 中的事务管理

2018-05-08  本文已影响0人  泛空秋慕

1. 事务的四个关键属性(ACID)

2. Spring 中的事务管理器的不同实现

3. Spring 的声明式事务管理

3.1 使用配置文件进行事务的声明式管理

    <!-- 声明式事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="pooledDataSource" />
    </bean>
 
<!-- 配置事物增强,如何控制 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 所有以add开头的方法都是事物方法 -->
            <tx:method name="add*" 
                       <!-- 事务传播行为 -->
                       propagation="REQUIRES_NEW"
                      <!--  事务隔离级别-->
                      isolation="READ_COMMITED"   
                      <!---事务回滚属性-->
                      rollback-for="java.lang.IOEXception,java.sql.SQLException"                     
                      no-rollback-for="java.lang.ArithmeticException"/>
            
            <!-- 以get开始的所有方法 -->
            <tx:method name="get*" 
                       <!-- 只读事务属性-->
                       read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <!-- aop切入点表达式 -->
        <aop:pointcut expression="execution(* com.supreme.service..*(..))"
            id="txPoint" />
        <!-- 配置事务增强 --> 
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint" />
    </aop:config>

3.2 使用@Transactional注解声明式的管理事务

    <!-- 声明式事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="pooledDataSource" />
    </bean>
    
    <tx:annotation-driven transaction-manager="transactionManager"/>

3.2.1 @Transactional注解使用细节

3.2.2 @Transactional注解使用示例

上一篇 下一篇

猜你喜欢

热点阅读