Spring框架在哪里实现事务?

问题描述 投票:0回答:1

我如何找到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。在前面的示例中,元素打开事务行为。

spring spring-mvc transactions implementation
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.