Spring事务创建动态代理
2023-08-23 11:29:48 1 举报
Spring事务创建动态代理
作者其他创作
大纲/内容
matches
开始精筛
获取实现类的方法可能存在是接口方法
底层解析逻辑
创建代理
AnnotationTransactionAttributeSource#determineTransactionAttribute
specificMethod = AopUtils.getMostSpecificMethod
computeTransactionAttribute
txAttr = findTransactionAttribute(specificMethod.getDeclaringClass())
txAttr.setDescriptor
tas.getTransactionAttribute
txAttr = findTransactionAttribute(specificMethod)
将方法描述设置到事务属性上
SpringTransactionAnnotationParser.class
未解析过真正的解析开始
txAttr
AbstractFallbackTransactionAttributeSource#getTransactionAttribute
精筛逻辑
parseTransactionAnnotation
TransactionAttribute
解析操作比较耗性能
调用事务内置Advisor内部的Pointcut解析方法是否命中切点
第一步没找到第二步:解析实现类上的注解,没找到 - 接口 - 父类
解析方法是否标记@Transaction
构建缓存
第一步:解析方法上的注解,没找到 - 接口- 父类
获取bean的所有方法
!=null
TransactionAttributeSourcePointcut#matches
...前面流程和Aop一样
0 条评论
回复 删除
下一页