如何找到 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的TransactionAttribute。
基于实现的SpringTransactionAnnotationParser是解析Spring的事务注释的策略实现之一,它解析了事务。 如果您需要深入研究这一点,那么您需要使用 spring-tx 模块