Spring 用什么注解开启事务?
在Spring中,我们使用@Transactional
注解来开启事务管理。@Transactional
可以应用在类级别和方法级别。当在类级别使用时,这个注解会应用到该类的所有公共方法上;当在方法级别使用时,它只会应用到具体的那个方法上。
以下是一个简单的例子,展示了如何在Spring中使用@Transactional
注解:
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
@Transactional
public void addBook(Book book) {
bookRepository.save(book);
}
}
在上面的例子中,addBook
方法被@Transactional
注解标记,因此当执行addBook
方法时,Spring会自动启动一个新的事务。如果在执行过程中没有发生异常,那么这个事务会在addBook
方法执行完毕后自动提交;如果在执行过程中发生了异常,那么这个事务会被自动回滚,所做的所有更改都会被撤销。
需要注意的是,@Transactional
注解只能应用在public方法上,如果应用在protected、private或default方法上,它不会报错,但是也不会有任何效果。