springboor @Transactional
时间: 2023-10-17 16:36:14 浏览: 84
@Transactional 是 Spring 框架提供的注解,用于实现事务管理。
在 Spring Boot 中使用 @Transactional 注解可以将一个方法或者类标记为事务的边界,表示该方法或类中的操作将在一个事务中进行。当方法执行时,如果发生异常,则事务会被回滚,否则,事务会被提交。
在使用 @Transactional 注解时,可以设置一些属性来控制事务的行为,例如传播行为、隔离级别、只读等。这些属性可以通过设置注解的属性值来指定,默认值可根据需要进行修改。
示例代码:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void saveUser(User user) {
userRepository.save(user);
}
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
}
```
在上面的示例中,`saveUser` 方法和 `getUserById` 方法都被标记为 @Transactional。`saveUser` 方法执行保存操作,如果发生异常则事务会回滚;`getUserById` 方法执行查询操作,默认使用默认的传播行为和隔离级别。
需要注意的是, @Transactional 注解只能应用在 public 方法上才能生效,因此在内部调用的方法如果需要事务支持,也需要将其声明为 public 方法。
阅读全文