spring事物初始化过程分析

这篇具有很好参考价值的文章主要介绍了spring事物初始化过程分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.注入4个bd

InfrastructureAdvisorAutoProxyCreator   父类:AbstractAutoProxyCreator
BeanFactoryTransactionAttributeSourceAdvisor   父类:Advisor
TransactionInterceptor                         父类:Advice
AnnotationTransactionAttributeSource

2.执行

org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessBeforeInstantiation

逻辑分析:遍历所有的bd:

获取beanname->判断beanname是否有长度并且没有被处理过->是否遍历放入advisedBeans->

是否是基础类->是否该跳过

spring事物初始化过程分析

 4大基础类

3.执行org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessAfterInitialization

spring事物初始化过程分析

 判断是否需要增强逻辑:

org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNecessary

 spring事物初始化过程分析

 根据切面创建代理逻辑:

spring事物初始化过程分析

spring事物初始化过程分析

 寻找所有的advisor

org.springframework.aop.support.AopUtils#findAdvisorsThatCanApply

spring事物初始化过程分析

 寻找所有advisor且可以申请使用的bean

org.springframework.aop.support.AopUtils#canApply(org.springframework.aop.Advisor, java.lang.Class<?>, boolean)

org.springframework.transaction.interceptor.TransactionAttributeSourcePointcut#matches

org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource#getTransactionAttribute

org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource#computeTransactionAttribute

1.首先去类对应的方法中寻找是否有@Transaction

spring事物初始化过程分析

2.方法找不到去类上找

spring事物初始化过程分析 

3.类上找不到再去接口方法找

spring事物初始化过程分析

4.接口方法找不到再去接口找,

4步都找不到那么直接返回null,找到了就创建代理对象。 

 文章来源地址https://www.toymoban.com/news/detail-430977.html

 

到了这里,关于spring事物初始化过程分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cisco交换机初始化过程跟踪

    公司有几台交换机需要初始化配置,这里帖出过程,给大家参考下。 此初始化过程只测试过Cisco 2960和3550系列交换机,方法可用。 感谢测试过程中对我提出帮助的。 一:知道交换机特权密码的情况下 如果你知道交换机的特权密码,那初始化就相当easy了.   二、不知道特权密

    2024年02月05日
    浏览(63)
  • K8S集群重新初始化--详细过程

    在引导k8s集群的过程时可能因为这个或那个的原因导致需要重新引导集群 。 下面整理了我在实际工作中初始化k8s集群的详细过程。 k8s环境部署总览 ip地址 类型 操作系统 服务配置 192.168.162.31 Master01 Centos7.6 2核CPU 2G内存 20G硬盘 192.168.162.41 node1 Centos7.6 2核CPU 2G内存 20G硬盘 192

    2024年02月02日
    浏览(49)
  • Spring初始化项目

    访问地址:https://start.spring.io idea配置:https://start.spring.io 访问地址:https://start.aliyun.com/bootstrap.html idea配置:https://start.aliyun.com 官网 阿里巴巴 版本 最新 稍旧 国内软件 大部分没有(mybatis plus) 有的支持(如:mybatis plus)

    2024年02月09日
    浏览(47)
  • 第3章 创建项目并初始化业务数据(过程记录)

    公用的声明、依赖、插件 properties 声明 log4g :处理日志的框架(日志的具体实现) sel4g :简单日志门面(简单日志的接口) mongodb-spark :MongoDB和Spark的接口 casbah :MongoDB在scala上的Driver(最新的有MongoScalaDriver) redis、kafka、spark、scala jblas:java线性代数库(矩阵运算) depen

    2024年02月13日
    浏览(44)
  • Spring Bean初始化方式

    对于Spring Bean 的初始化归纳了下,主要可以归纳一下三种方式 @PostConstruct 标注方法 自定义初始化方法 实现 initializingBean 接口的afterPropertiesSet()方法 执行顺序:Constructor @PostConstruct InitializingBean init-method @PostConstruct是Java自己的注解 假设类UserController有个成员变量UserService被**

    2024年02月01日
    浏览(45)
  • Android---Class 对象在执行引擎中的初始化过程

    一个 class 文件被加载到内存中的步骤如下图所示: 装载  装载是指 Java 虚拟机查找 .class 文件并生成 字节流 ,然后根据字节流创建 java.lang.Class 对象的过程。 1. ClassLoader 通过一个类的 全限定名 ( 包名+类名 )来查找 .class 文件,并生成二进制字节流。其中 class 字节码文件

    2024年02月07日
    浏览(51)
  • 【SA8295P 源码分析】86 - AIS Camera Device 设备初始化 之 AisProcChainManager 模块初始化源码分析

    【源码分析】 因为一些原因,本文需要移除, 对于已经购买的兄弟,不用担心,不是跑路, 我会继续持续提供技术支持, 有什么模块想学习的,或者有什么问题有疑问的, 请私聊我,我们 +VX 沟通技术问题,一起学习,一起进步 接下来,我一一私聊已经购买的兄弟添加V

    2024年02月10日
    浏览(47)
  • Spring Boot 系统初始化器详解

    Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一) Spring Boot 2.7.8 中文参考指南(二)-Web Spring Boot 源码阅读初始化环境搭建 Spring Boot 框架整体启动流程详解 Spring Boot 系统初始化器详解 Spring Boot 有多种加载自定义初始化器的方法: 1、创建一个实现ApplicationContextInitializer接口的

    2024年02月11日
    浏览(48)
  • canal server初始化源码分析

    在开始之前,我们可以先了解下, canal 配置方式 ManagerCanalInstanceGenerator: 基于manager管理的配置方式,实时感知配置并进行server重启 SpringCanalInstanceGenerator:基于本地spring xml的配置方式,对于多instance的时候,不便于扩展,一个instance一个xml配置 canal 配置文件 canal.properties  

    2024年01月19日
    浏览(44)
  • Spring初始化顺序- RabbitMq 无法自动创建队列

    项目中使用了RabbitMq, 并配置了自动创建topic, exchange,binding 等,但是通过测试发现,有一个队列始终无法自动创建,在对spring 源码以及rabbitmq 源码debug 后发现问题。 rabbitmq 配置了两套环境 , 以下为代码示例 Queue, Exchange, Binding 自动生成配置: 通过运行项目,发现队列,交换机

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包