Spring中@Transactional注解有哪些参数?
时间: 2025-06-26 18:19:40 浏览: 2
### 关于 `@Transactional` 注解的参数
在 Spring 框架中,`@Transactional` 是用于管理事务的核心注解之一。它提供了多个可配置参数来满足不同的需求。以下是该注解的主要参数及其功能说明:
#### 1. **propagation**
定义事务的传播行为,默认值为 `Propagation.REQUIRED`。这决定了当前方法如何参与事务上下文。常见的取值如下:
- `REQUIRED`: 如果存在现有事务,则加入其中;如果没有则创建新事务[^1]。
- `REQUIRES_NEW`: 创建一个新的独立事务,即使已有事务也暂停原有事务并启动新事务。
- `SUPPORTS`: 支持当前事务的存在与否不影响执行逻辑。
#### 2. **isolation**
指定事务隔离级别,默认为 `Isolation.DEFAULT`(由底层数据库决定)。常见选项有:
- `READ_UNCOMMITTED`
- `READ_COMMITTED`
- `REPEATABLE_READ`
- `SERIALIZABLE`
这些级别影响并发环境下的数据一致性表现[^2]。
#### 3. **timeout**
设置事务超时时间(单位秒),默认情况下无超时限制。当超过设定的时间未完成操作时会自动回滚交易。
#### 4. **readOnly**
布尔型标志位,指示此事务是否只读优化处理。对于查询密集型应用可以提升性能,因为某些资源可能不会锁定记录。
#### 5. **rollbackFor**, **noRollbackFor**
分别用来列举哪些异常应该触发或者不应该触发事务回滚的行为模式。通过这两个属性能够更精细地控制错误条件下的恢复策略。
```java
@Transactional(
propagation = Propagation.REQUIRED,
isolation = Isolation.READ_COMMITTED,
timeout = 30,
readOnly = false,
rollbackFor = Exception.class,
noRollbackFor = RuntimeException.class
)
public void someBusinessMethod() {
// business logic here...
}
```
上述代码片段展示了如何综合运用以上提到的各种参数去定制化一个具体的业务方法上的事务特性。
---
###
阅读全文
相关推荐


















