吃透 Spring AOP (1.理解概念)

news2024/11/25 18:25:28

理解 什么是AOP

AOP,全称面向切面编程。 它可以说是对面向对象OOP的思想升华。从总的理解来讲,AOP是横向对不同程序的抽象。这个思想要不断实践动手之后,才会有很深刻的理解

理解 代理模式

在理解AOP之前,我们首先要单独说一个设计思想 就是代理模式。
简单来讲 就是 methodA()我不想把这个方法暴露出去,或者我想在这个方法的基础上给他加强一下。 那么我就可以创建一个methodB() 引入方法A为私有属性(外界无法访问),然后我在方法b中 对A改造也好 增强也罢 总之就是在a基础上搞来搞去,然后我把B公开给外部。 ——这种思想就叫代理

AOP思想的实现方案——动态代理技术

理解了代理,我们再说动态代理。 所谓的动态代理,就是运行期间 对目标对象的方法进行增强。就是上面说的 B 增强 A, B作为A的代理对象,它和A同名且 A的原有逻辑他全都有, 在这个原有逻辑的基础上 再嵌入其他逻辑或者方法。

AOP相关概念

aop里面有很多术语 我们照着图来看:
在这里插入图片描述
这样看就清晰了:
A是被B代理增强的 所以A是目标对象 生成了A的代理对象。

A的所有方法理论上都是可以被B的方法增强的,所以所有的方法都是连接点

A实际上只有方法1 和方法2 被增强,所以这俩方法是切入点 就是实际被增强的方法

其中方法1作为切点 和B对象的增强方法组合起来 这就是切面。
所以我们看到代理对象里面 有两个切面。


Spring 实现动态代理的两种方式

  • JDK动态代理(默认)
  • CGLIB 动态代理

问题来了 新手可能会晕 spring什么时候用哪种代理??
一句话就可以总结:

被代理的类对象有没有实现接口

如果有 默认使用 JDK动态代理。
如果没有 只能换成CGLIB 动态代理!

就这么言简意赅 你需要看你那个代理的类有没有实现接口。至于为什么 简单来说 jdk动态代理 它创建了一个代理类
而这个代理类——只 能 代 理 接 口


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

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

相关文章

FFMPEG录屏(16)--- MAG(Magnification)捕获桌面

最近增加了对Magnification API捕获桌面的支持,记录一下过程和其中遇到的问题。 参考资料 Magnification API overview Magnification API sample webrtc screen_capturer_win_magnifier.cc Structured Exception Handling (C/C) 前言 我又不得不吐槽一下了&a…

【JavaWeb】-- HTTP、Tomcat、Servlet

文章目录 HTTP1.简介2.请求数据格式2.2.1 格式介绍 3.响应数据格式3.1 格式介绍3.2 响应状态码 Tomcat1.简介1.1 什么是Web服务器 2.基本使用2.1 安装2.2 启动2.3 关闭 3.Maven创建Web项目4.IDEA使用Tomcat4.1集成本地Tomcat4.2 Tomcat Maven插件 Servlet1.简介2.快速入门3.执行…

okhttp篇3:RealCall

Call Call一般代表一个已经准备好的Request,Request的包装类,可执行,它一般有两个主要的方法: execute(立即执行,并阻塞线程,直到Response返回)enqueue(将Request放入队列,等待线程池调度执行…

spring源码学习_01 本地环境搭建

参考网上各种资源,终于把spring源码运行起来了;步骤总结如下: spring版本: 5.2.x 本地系统mac idea 2019.3.2 下载地址:https://www.jetbrains.com/idea/download/other.html jdk 11 下载地址:https://repo…

【设计模式二十三剑】✨编写更高质量代码的秘诀✨

文章目录 ✨✨简述🎆【万能之门】简单工厂模式(Simple Factory)🎇【制造之剑】工厂方法模式(Factory Method)🎇【生产之剑】抽象工厂模式(Abstract Factory)&#x1f387…

C语言基础知识:函数的调用

函数的定义 一般来说,执行源程序就是执行主函数main,其他函数只能被主函数所调用,而其他函数之间也可以相互调用。 1.标准库函数: 分为:I/O函数,字符串,字符处理函数,数学函数&am…

Go语言的函数和defer用法

目录 函数的基本用法 函数中的变长参数 递归函数(recursion) 函数是“一等公民” 函数中defer的用法 defer的底层原理 使用 defer 跟踪函数的执行过程 defer的注意事项 (1)Go语言内置的函数中哪些可以作为deferred 函数 (2&#xf…

面试code(1)—— 排序算法

算法动画 从小到大排序 1 冒泡排序 被动的将最大值送到最右边 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3、针对…

Redis修炼 (17. redis主从集群的数据同步原理 全量同步/增量同步)

数据同步 在一个集群之中 数据同步是很重要的。 redis的集群有多种。 我们这次主要说 主从集群。 全量同步 既然是主从集群 那么肯定是 1个master节点 多个从节点。redis的集群中的第一次同步 我们叫 全量同步: 为什么要强调第一次? 因为如果你是第一…

独家策略大放送:最高年化150%的策略,谁不感兴趣?(含免费版)

上一节我们在沪深300中回测了550中均线交叉策略,有朋友想看看这些策略在沪深300以外的中小市场表现如何,同时大家都非常好奇表现抢眼的老Q自研指标WMA_Q系列到底是怎么计算的。 于是老Q又选择了中证500和创业板指来验证下这些策略是否能有同样的表现(PART 1),顺便在今天的…

流水线中的握手信号笔记

1.《握手信号的打拍(一)》 解释了,为什么在流水线中,握手信号不能简单得加一级寄存器 业界关于流水线级握手信号的标准答案是 skid buffer,此外还有人提到了 Register slice 2.《握手信号的打拍(二)》 为什么简单加一级寄存器会握手失败 &…

抖音SEO系统源码开发搭建/MVC二次开发定制

首先,抖音SEO矩阵系统源码开发,如何做独立部署,首先我们需要深刻理解这个系统的开发逻辑是什么?开发的前言是在抖音平台做流量新增,现在抖音及各大主流短视频平台,流量新增,各大企业需要在短视频…

Redis BigKey

Redis BigKey 一 面试题引入二 MoreKey案例2.1 大批量往redis里面插入2000W测试数据key2.1.1 Linux Bash下执行,插入100W2.1.2 通过redis提供的管道 --pipe命令插入100W大批量数据 2.2 key *2.3 生产上如何限制keys*/flushdb/flushall等危险命令以防止误删误用&…

我们在操作自动化测如何实现用例设计实例

在编写用例之间,笔者再次强调几点编写自动化测试用例的原则: 1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统…

【结构体-位段】

位段 在结构体中&#xff0c;以位为单位的成员&#xff0c;咱们称之为位段(位域)。 struct packed_data{unsigned int a:2;unsigned int b:6;unsigned int c:4;unsigned int d:4;unsigned int i; } data;注意&#xff1a;不能对位段成员取地址。 #include<stdio.h>str…

5.名词复数、动词规则、代词、形容词、副词(不包含不规则)

目录 一、 名词、动词、代词、形容词、副词五种的规则变化。 &#xff08;1&#xff09;名词。 &#xff08;1.1&#xff09;名词复数变化。 &#xff08;1.2&#xff09;名词所有格。 &#xff08;2&#xff09; 动词变化规则。 &#xff08;3&#xff09;代词。 &…

C语言-double和float在内存中的存储方式

本文主要介绍double和float数据类型在C语言中的存储方式 文章目录 double和float存储方式介绍如何存储&#xff1f; double和float存储方式介绍 从存储结构和算法上来讲&#xff0c;double和float是一样的&#xff0c;不一样的地方仅仅是float是32位的&#xff0c;double是64位…

【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF1xx和STMF4xx+数据发送和接收+轮询接收方式+基础样例(1)】

【CAN卡通信的下位机-STM32cubeIDE-hal库数据发送和接收轮询接收方式基础样例1】 1、概述2、实验环境3、自我总结与提升(1)道理学习了一堆&#xff0c;如何使用STM32进行can的收发的话&#xff0c;配置还是挺简单。(2)自己实现了can的收发后&#xff0c;要反过来&#xff0c;补…

shell编程——Here Document免交互与Expect(免交互,高效率)

shell编程——Here Document免交互与Expect&#xff08;免交互&#xff0c;高效率&#xff09; 一、Here Document免交互概述二、Here Document常规用法1、免交互方式实现对行数地统计2、通过read/tee命令接受输入并打印3、通过passwd给用户设置密码4、支持变量替换5、整体赋值…

K8S基础操作之命令篇

目录 第一章.陈述式资源管理 1.1陈述式资源管理方法 1.2.基本命令查看信息 1.3.K8S管理操作分为2大类 1.4.数据网络端口访问流程 第二章.基本信息查看 2.1.命令格式 2.2.命令 2.3.项目的生命周期 第三章.service 3.1.概述 3.2.service 的 type 类型 3.3 headless …