spring - Spring框架的事务实现在哪里?
问题描述
我怎样才能找到springframework的事务注释的实现?我只找到下面的代码:
这是反编译的.class 文件。
package org.springframework.transaction.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {
@AliasFor("transactionManager")
String value() default "";
@AliasFor("value")
String transactionManager() default "";
Propagation propagation() default Propagation.REQUIRED;
Isolation isolation() default Isolation.DEFAULT;
int timeout() default -1;
boolean readOnly() default false;
Class<? extends Throwable>[] rollbackFor() default {};
String[] rollbackForClassName() default {};
Class<? extends Throwable>[] noRollbackFor() default {};
String[] noRollbackForClassName() default {};
}
一些描述,但看不到它是如何实现的:您可以将@Transactional
注释放在接口定义、接口上的方法、类定义或类上的公共方法之前。然而,仅仅存在@Transactional
注释并不足以激活事务行为。@Transactional
注释只是元数据,一些运行时基础设施可以使用这些元数据,这些基础设施是感知@Transactional
的,并且可以使用元数据来配置具有事务行为的适当 bean。在前面的示例中,该<tx:annotation-driven/>
元素打开了事务行为。
解决方案
幕后反射是播放器,可以看到 TransactionAnnotationParser.java 接口的实现(用于解析已知事务注解类型的策略接口。AnnotationTransactionAttributeSource 委托给此类解析器以支持特定的注解类型,例如 Spring 自己的 Transactional、JTA 1.2 的 Transactional 或 EJB3 的交易属性。),
基于实现SpringTransactionAnnotationParser是解析 Spring 的 Transactional 注释的策略实现之一,它解析事务。如果您需要深入研究,那么您需要使用spring-tx模块
推荐阅读
- azure - Azure 功能高级/消费计划的扩展标准
- gradle - 找不到插件 [id: 'com.github.johnrengelman.shadow', 版本: '5.2.0']
- powershell - 如何指定我想要来自 Get-WinEvent 的 Microsoft Office 警报消息?
- html - 桌面和 iPhone 的 Safari 浏览器上的空白图像,但在其他手机和 Windows 浏览器上可以正常打开
- sql - SQL 中的硬编码值(复杂查询)
- c - 调用函数以将C中的数字加一
- python - python AttributeError:'DataFrame'对象没有属性'Date'
- java - 外部 Kafka 密钥库和信任库的路径无效
- angular - Angular 9 DI 问题
- javascript - 从图像阵列创建视频的最快方法