где Spring Framework транзакционной реализации? - PullRequest
0 голосов
/ 13 февраля 2020

Как я могу найти реализации транзакционной аннотации 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 перед интерфейсом определение, метод интерфейса, определение класса или метод publi c для класса. Однако простого присутствия аннотации @Transactional недостаточно для активации поведения транзакции. Аннотация @Transactional - это просто метаданные, которые могут использоваться некоторой инфраструктурой времени выполнения, которая осведомлена о @Transactional и которая может использовать метаданные для настройки соответствующих bean-компонентов с транзакционным поведением. В предыдущем примере элемент <tx:annotation-driven/> включает поведение транзакции.

1 Ответ

1 голос
/ 13 февраля 2020

За сценой отражается игрок. Вы можете увидеть реализацию интерфейса TransactionAnnotationParser. java интерфейс (Стратегический интерфейс для синтаксического анализа известных типов аннотаций транзакций. AnnotationTransactionAttributeSource делегирует такие парсеры для поддержки определенных типов аннотаций c, таких как собственные транзакции Spring Транзакционный атрибут JTA 1.2 или TransactionAttribute EJB3.),

На основе реализации SpringTransactionAnnotationParser является одной из реализаций стратегии для анализа аннотации Transactional в Spring и ее анализа транзакции. Если вам нужно глубже погрузиться в это, то вам нужно go до конца с spring-tx module

...