我如何找到springframework的事务性注释的实现?我只找到以下代码:
这是decompiled.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。在前面的示例中,元素打开事务行为。
在幕后反射是播放器,您可以看到TransactionAnnotationParser.java接口的实现(用于解析已知事务注释类型的策略接口。AnnotationTransactionAttributeSource委托给此类解析器以支持特定的注释类型,例如Spring自己的Transactional,JTA 1.2的Transactional或EJB3的TransactionAttribute。),
基于实现SpringTransactionAnnotationParser是用于解析Spring的Transactional注释及其解析事务的策略实现之一。如果您需要深入研究,则需要使用spring-tx模块