@Transactional有两个来源包,该导入哪一个?

如题所述

第1个回答  2022-09-29

org.springframework.transaction.annotation.Transactional 这个是spring的。

@Transactional事务问题(org.springframework.transaction.annotation.Transactional)

@Transactional有两个不同的包。在Spring的事务管理中应该使用org.springframework.transaction.annotation.Transactional。

在Java EE 7 应用中,应该使用javax.transaction.Transactional。

扩展资料:

在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@Transactional 的属性配置信息。

这个代理对象决定该声明@Transactional 的目标方法是否由拦截器 TransactionInterceptor 来使用拦截,在 TransactionInterceptor 拦截时。

会在在目标方法开始执行之前创建并加入事务,并执行目标方法的逻辑, 最后根据执行情况是否出现异常,利用抽象事务管理器AbstractPlatformTransactionManager 操作数据源 DataSource 提交或回滚事务。