用于解析已知事务注释类型的策略接口。AnnotationTransactionAttributeSource委托给此类解析器,以支持特定的注释类型,如Spring自己的事务性、JTA 1.2的javax。交易事务或EJB3的javax。ejb。交易属性。
1. TransactionAnnotationParser接口简介
TransactionAnnotationParser接口的实现类有Ejb3TransactionAnnotationParser、JtaTransactionAnnotationParser、SpringTransactionAnnotationParser。该接口定义如下:
public interface TransactionAnnotationParser {
default boolean isCandidateClass(Class<?> targetClass) {
return true;
}
@Nullable
TransactionAttribute parseTransactionAnnotation(AnnotatedElement element);
}
1.1 isCandidateClass方法
确定给定类是否是此TransactionAnnotationParser注释格式中事务属性的候选类。
如果此方法返回false,则给定类上的方法将不会被#parseTransactionAnnotation内省遍历。因此,返回false是对不受影响的类的优化,而true只是意味着该类需要对给定类上的每个方法分别进行全面的内省。
1.2 parseTransactionAnnotation方法
基于该解析器理解的注释类型,解析给定方法或类的事务属性。
这实质上是将已知的事务注释解析为Spring的元数据属性类。如果方法/类不是事务性的,则返回null。
2. SpringTransactionAnnotationParser类
解析Spring事务注释的策略实现。
网友评论