首页 > 解决方案 > 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/>元素打开了事务行为。

标签: springspring-mvctransactionsimplementation

解决方案


幕后反射是播放器,可以看到 TransactionAnnotationParser.java 接口的实现(用于解析已知事务注解类型的策略接口。AnnotationTransactionAttributeSource 委托给此类解析器以支持特定的注解类型,例如 Spring 自己的 Transactional、JTA 1.2 的 Transactional 或 EJB3 的交易属性。),

基于实现SpringTransactionAnnotationParser是解析 Spring 的 Transactional 注释的策略实现之一,它解析事务。如果您需要深入研究,那么您需要使用spring-tx模块


推荐阅读