事物控制

@Autowired
private DataSourceTransactionManager transactionManager;
//事务控制
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// 事物隔离级别,开启新事务,这样会比较安全些。
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); 
TransactionStatus tra_status = transactionManager.getTransaction(def); // 获得事务状态

try{
    transactionManager.commit(tra_status);
} catch (Exception e) {
    e.printStackTrace();
    transactionManager.rollback(tra_status);
 }

 

### Spring Boot 事务管理注解及其使用 #### @Transactional 注解详解 `@Transactional` 是 Spring 提供的核心注解之一,用于定义方法级别的事务边界。当应用此注解的方法执行期间发生异常时,默认情况下会触发事务回滚。 - **属性说明** - `readOnly`: 设置为 true 表明当前事务只读, 可提高性能[^2]。 - `propagation`: 定义了事务传播行为,即如何处理已有事务的存在情况[^1]。 - `isolation`: 设定事务隔离级别,防止脏读等问题的发生[^1]。 - `timeout`: 指定了最大超时时间(秒),超过该时间段未完成则强制回滚。 - `rollbackFor`, `noRollbackFor`: 明确指定哪些类型的异常应该引起/不引起回滚操作。 ```java @Service public class UserService { @Autowired private UserRepository userRepository; /** * 创建用户服务层实现. */ @Transactional(readOnly = false, propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 30, rollbackFor = Exception.class) public void createUser(User user){ try { // 执行保存用户的业务逻辑... userRepository.save(user); // 故意抛出异常模拟错误场景 throw new RuntimeException("Simulated error"); } catch (Exception e) { System.out.println(e.getMessage()); // 此处捕获到异常后不会阻止默认的自动回滚机制 } } } ``` 上述代码片段展示了如何利用 `@Transactional` 来配置一个典型的服务类方法。这里设置了一些常见的参数选项,并故意引入了一个运行时异常来展示事务回滚的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值