Spring-声明式事务配置及注意事项

本文详细介绍了Spring声明式事务管理的配置方法,包括纯XML、XML注解结合、纯注解三种方式,并讲解了注解的使用注意事项,如只适用于public方法,非特定异常不自动回滚等。同时,建议在具体类上使用@Transactional注解而非接口,以确保事务管理的正确生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring声明式事务管理顶层接口:

public interface PlatformTransactionManager {
   

    /**
     * 获取事务状态信息
     */
	TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException;

    /**
     * 提交事务
     */
	void commit(TransactionStatus status) throws TransactionException;

    /**
     * 回滚事务
     */
	void rollback(TransactionStatus status) throws TransactionException;

}

作用:

此接口是Spring的事务管理器核心接口。Spring本身并不支持事务实现,只是负责提供标准,应用底层支持什么样的事务,需要提供具体实现类。此处也是策略模式的具体应用。在Spring框架中,也为我们 内置了一些具体策略,例如:DataSourceTransactionManagerHibernateTransactionManager等。(HibernateTransactionManager事务管理器在 spring-orm-5.1.12.RELEASE.jar中)

纯XML方式配置

  1. 导入依赖
    <!--引入spring声明式事务相关-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.1.12.RELEASE</version>
    </dependency>
    
  2. XML配置
    <!--spring声明式事务配置,声明式事务就是配置一个aop-->
    <!--横切逻辑-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
    </bean>
    
    <!--配置事务增强-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--定制事务细节,传播行为、隔离级别等-->
        <tx:attributes>
            <!--
            一般性配置
            这里建议项目中约定好前缀,根据前缀配置
            read-only:是否只读事务
            propagation:事务传播行为
            isolation:事务隔离级别,DEFAULT:使用数据库配置的隔离级别
            timeout:事务超时,-1不设置
            rollback-for:指定遇到哪些异常回滚,默认是RuntimeException
            -->
            <tx:method name="*" read-only="false" propagation="REQUIRED" isolation="DEFAULT" timeout="-1" rollback-for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值