@transactional面试
时间: 2025-02-01 08:27:20 浏览: 36
### @Transactional 注解面试常见问题及解答
#### 1. @Transactional 的作用是什么?
`@Transactional` 是 Spring 提供的一个用于声明式事务管理的注解。通过该注解可以简化编程模型,在不需要编写大量模板代码的情况下实现对数据库操作的一致性和隔离性控制[^2]。
#### 2. 如何配置 `@Transactional`?
为了使 `@Transactional` 生效,需确保项目中已启用基于注解的事务支持。通常情况下,只需在配置类上添加 `@EnableTransactionManagement` 即可激活此功能。另外还需要定义一个 PlatformTransactionManager 实现来处理具体的事务逻辑[^4]。
```java
@Configuration
@EnableTransactionManagement
public class AppConfig {
// ...
}
```
#### 3. 解释传播行为 (Propagation Behavior)
Spring 中提供了多种传播行为选项,默认为 REQUIRED。当设置为 REQUIRES_NEW 时,即使当前存在已有事务也会暂停它并启动一个新的独立事务实例;这使得两个事务之间互不影响,其中一个失败不会影响另一个的状态。
#### 4. 超时时间与只读属性
- **超时时间**:可以通过 timeout 属性指定最大执行时限(秒)。一旦超过设定的时间限制,则自动触发回滚机制。
- **只读模式**:对于那些仅涉及查询而不修改数据的操作来说,标记为 readOnly=true 不仅能提高性能还能防止意外的数据变更发生。
```java
@Transactional(timeout = 30, readOnly = true)
public List<User> findAllUsers() { ... }
```
#### 5. 回滚规则
默认情况下,只有遇到运行期异常才会导致事务被标记为 rollback-only 状态。但是也可以自定义哪些类型的异常应该引起回滚,比如通过 noRollbackFor 或者 rollbackFor 参数来进行更细粒度地控制。
```java
@Transactional(noRollbackFor = CustomException.class)
public void processSomething() throws CustomException { ... }
```
阅读全文
相关推荐


















