AOP工作流程

news2024/11/15 7:53:07

由于AOP是基于Spring容器管理的bean做的增强,所以整个工作过程需要从Spring加载bean说起:
流程1:Spring容器启动
容器启动就需要去加载bean,哪些类需要被加载呢?
需要被增强的类,如:BookServiceImpl
通知类,如:MyAdvice
注意此时bean对象还没有创建成功
流程2:读取所有切面配置中的切入点
在这里插入图片描述
上面这个例子中有两个切入点的配置,但是第一个ptx()并没有被使用,所以不会被读取,只会读取使用了的切入点pt()。
流程3:初始化bean
判定bean对应的类中的方法是否匹配到任意切入点
注意第1步在容器启动的时候,bean对象还没有被创建成功。
要被实例化bean对象的类中的方法和切入点进行匹配
匹配失败,创建原始对象,如UserDao
匹配失败说明不需要增强,直接调用原始对象的方法即可。
匹配成功,创建原始对象(目标对象)的代理对象,如: BookDao
匹配成功说明需要对其进行增强
对哪个类做增强,这个类对应的对象就叫做目标对象
因为要对目标对象进行功能增强,而采用的技术是动态代理,所以会为其创建一个代理对象
最终运行的是代理对象的方法,在该方法中会对原始方法进行功能增强
流程4:获取bean执行方法
获取的bean是原始对象时,调用方法并执行,完成操作。
获取的bean是代理对象时,根据代理对象的运行模式运行原始方法与增强的内容,完成操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【POJ No. 3468】 简单的整数问题 A Simple Problem with Integers

【POJ No. 3468】 简单的整数问题 A Simple Problem with Integers 北大OJ 题目地址 其实这道题之前也已经 做过了 https://blog.csdn.net/weixin_44226181/article/details/128112081 上次就 直接用的区间更新 和区间查询。这次 我们使用 分块方法实现一次。 【题意】 有N…

IDEA搭建Android开发环境及创建Helloword项目并运行

IDEA开发Android环境搭建 安装jdk JDK版本 :jdk-8u161-windows-x64.exe 链接:https://pan.baidu.com/s/1leC6nilGeCEYsD99Rlt5hQ 提取码:0epq 配置环境变量 配置成功会出现如下所示 安装sdk 安装完成后,SDK的目录如下&#…

数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法...

全文链接:http://tecdat.cn/?p30131最近我们被客户要求撰写关于上海空气质量指数的研究报告。本文向大家介绍R语言对上海PM2.5等空气质量数据(查看文末了解数据免费获取方式)间的相关分析和预测分析,主要内容包括其使用实例&…

[附源码]计算机毕业设计学习互助辅助系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

菜谱APP源码和设计报告

《移动互联开发》 课程作业 学 院: 班 级: 学 号: 姓 名: 日 期: 设计要求(提交文档时需删除): 1.本课程设计作为《Android 程序设计》的期末考查内容。 2.任务安排: &…

WAVE SUMMIT+2022飞桨平台新升级 全面支撑大模型研发与产业化

11月30日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT 2022深度学习开发者峰会如期举行。峰会上,百度AI技术生态总经理马艳军发布了飞桨深度学习平台的最新技术和生态进展,全新发布飞桨开源框架2.4版本,带来业界首个端…

在Linux中部署运维监控系统WGCLOUD

在公网IP为x.x.x.x,安装CentOS8或Alibaba Cloud Linux 3.2104 LTS 64位系统的服务器(服务端)上,先安装jdk8,然后安装数据库mariadb-10.5,最后进行server安装。 在需要监控的安装CentOS8或Alibaba Cloud L…

基于多时间尺度滚动优化的多能源微网双层调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Redis】redis的理解与使用、springboot中redis的五种数据类型的相关存取、StringRedisTemplate

文章目录Redis简介:redis的安装与使用:1.启动方式:2.修改密码3. Redis可视化软件4.redis的使用5.有关redis的存储问题springBoot项目使用redis▶jar包:▶示例:1.使用opsForValue操作字符串2.使用opsForList操作List3.使…

智能使得宇宙趋向稳定吗?

——评《智能简史》 最近读完了加拿大工程院院士于非的新著《智能简史》,书中的主要观点是“智能的作用是推动宇宙趋向稳定”。从这个观点出发,万物都有智能,因为它们遵循的规律都具有这个作用。即使是人们认为“无智能”的物理对象&#xff…

vue纯手写思维导图,拒绝插件(cv即用)

vue纯手写思维导图,拒绝插件(cv即用) 已完成功能点:折叠、放大、缩小、移动 后续增加功能点:添加、删除 先看结果: 有这么个需求,按照层级关系,把表格放在思维导图上,我第一时间想到用插件&am…

Android开发JetPack-Databinding组件

DataBinding介绍Android开发JetPack-Databinding组件1. 什么是databinding(1)简介(2)意义2. databinding基本使用(1)启用databinding(2)定义一个布局(3)创建一…

Redis02:企业架构介绍以及redis介绍

企业架构介绍以及redis介绍NoSql概述单机Mysql的演进当今企业架构分析NoSql概述 单机Mysql的演进 1、单机Mysql的年代 90年代一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候更多的去使用静态html,服务器没有太大的压力。这…

HCIP实验3-1:IBGP与EBGP

实验 3-1 IBGP与EBGP 学习目的 掌握区域内部BGP的配置方法掌握多区域BGP的配置方法观察BGP的邻居表和数据库掌握BGP更新源的配置方法掌握EBGP多跳的配置方法观察IBGP和EBGP中路由的下一跳的变化掌握IBGP中下一跳的配置掌握BGP的Network命令的配置方法 拓扑图 场景 你是公司…

open label file.(This can be normal only if you use MScoco)

E:\yolov4-rubish\darknet\our_data\ImagesAug 把标签的txt文件和Jpg文件放在同一个文件夹

Kafka 入门知识,看这一篇就够了(上)

目录01 初识 Kafka02 topic & partition03 Kafka 分布式最近在学习 Kafka(别问,问就是公司在用 ),将学习过程中的笔记整理出来分享给大家,就当是入入门 01 初识 Kafka Kafka 最早是由 LinkedIn 公司开发的&#x…

python中numpy数组形状和计算

1. numpy数组形状 数组可以理解为是矩阵,所以会涉及几行几列 import numpy as np import randomt1 np.array([[1,2,3],[4,5,6]]) print(t1) print(t1.shape)在这段逻辑里,t1是个数组,输出结果后 (2, 3)表示的就是这个数组是一个2行3列的矩…

计算机系统基础实验——数据的机器级表示(计算浮点数 f 的绝对值[f])

题目要求: 这个函数计算浮点数f的绝对值[f]。如果f是NaN,函数应该简单的返回f。 Unsigned float_abs (unsiged f) { /**************/ return/*******/; } 先分析题目,题目有两个要求: 1.判断f是否是NAN类型,如果是返…

文件管理,给文件名称插入纯数字详细步骤

在日常办公过程中,我们经常会需要对文件名称进行重命名,如何给文件插入纯数字呢?一两个文件还好可以自定义重命名,面对大量文件的时候,怎么在文件名称中插入纯数字呢?一起来看看吧! 第一步&…

这 5 本数据分析书籍,都是经典中的经典

下面要推荐的 5 本数据分析书籍对于数据分析领域而言,经典、经典、还是经典。 强烈建议先收藏,再观看。 《深入浅出数据分析》 数据分析入门第一本。 本书构思跌宕起伏,行文妙趣横生,无论是职场老手,还是业界新人&…