Spring事务管理 @Transactional 注解管理事务原理深度剖析
一、 @Transactional 注解解析
方法入口:SpringTransactionAnnotationParser#parseTransactionAnnotation(java.lang.reflect.AnnotatedElement)
下面看 parseTransactionAnnotation方法做了什么 :
parseTransactionAnnotation 方法的作用是将注解中声明的属性都解析加入到 RuleBasedTransactionAttribute 中
并return 给调用者.
二、为什么是SpringTransactionAnnotationParser 解析Transactional注解 , 从哪里来的?
查看 SpringTransactionAnnotationParser 的引用 , 只有 AnnotationTransactionAttributeSource 的构造方法中有
三、那么为什么是 AnnotationTransactionAttributeSource ?
这我们就不得不从 <tx:annotation-driven transaction-manager=“transactionManager”/> 讲起了(spring 是如何处理各种xml标签的,由谁解析, 这里不再赘述)
看 TxNamespaceHandler
然后到 AnnotationDrivenBeanDefinitionParser , 看AnnotationDrivenBeanDefinitionParser.parse方法