Spring学习(十五)-事务的其他属性

本文深入探讨了Spring框架中声明式事务管理的关键特性,包括事务传播行为、隔离级别、只读属性及超时设置等,并通过具体示例展示了如何在业务逻辑中应用这些配置。

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

事务的属性:

1.使用propagation指定事务的的传播行为,即当前的事务方法被另一个事务方法

调用时如何使用事务,默认取值为REQUIRED,即使用调用方法的事务

REQUIRES_NEW使用自己的事务 调用的事务方法的事务被挂起

2.使用isolation指定事务的隔离级别,最常用的取值为READ_COMMITTED

3.默认情况下Spring的声明式事务对所有的运行时异常进行回滚,也可通过对应的

属性进行设置为readOnly=true

5.使用timeout指定强制回滚之前事务可以占用的时间

1.BookShopServiceImpl实现类

“`
package com.spring.tx;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service(“bookShopService”)
public class BookShopServiceImpl implements BookShopService {

@Autowired
public BookShopDao bookShopDao;

/*添加事务注解
 * 1.使用propagation指定事务的的传播行为,即当前的事务方法被另一个事务方法调用时
 * 如何使用事务,默认取值为REQUIRED,即使用调用方法的事务
 * REQUIRES_NEW使用自己的事务 调用的事务方法的事务被挂起
 * 2.使用isolation指定事务的隔离级别,最常用的取值为READ_COMMITTED
 * 3.默认情况下Spring的声明式事务对所有的运行时异常进行回滚,也可通过对应的属性进行设置
 * 4.使用readOnly指定事务是否为可读,表示这个事务只读数据但不更新数据
 * 应设置为readOnly=true
 * 5.使用timeout指定强制回滚之前事务可以占用的时间
 * @Transactional(propagation=Propagation.REQUIRES_NEW,
        isolation=Isolation.READ_COMMITTED,
        noRollbackFor= {UserAccountException.class},
        readOnly=false,
        timeout=3)

 */
@Transactional(propagation=Propagation.REQUIRES_NEW,
        isolation=Isolation.READ_COMMITTED)
@Override
public void purchase(String username, String isbn) {

    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //1.获取书的单价
    int price=bookShopDao.findBookPriceByIsbn(isbn);
    //2.更新书的库存
    bookShopDao.updateBookStock(isbn);
    //3.更新用户余额
    bookShopDao.updateUserAccount(username, price);

}

}

““

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值