【八股文】Spring 谈谈你对AOP的理解

AOP

AOP(Aspect-Oriented Programming,面向切面编程):是一种新的方法论,是对传统 OOP(Object-Oriented Programming,面向对象编程)的补充。
面向对象是纵向继承,面向切面是横向抽取。

OOP思想是一种垂直纵向的继承体系,通过子类继承父类可以解决大部分代码重复的问题,但对于一些特殊问题,如在父类所有方法的相同位置进行一些日志控制,OOP便无法解决。

AOP就是解决该类问题,通过一种横向抽取的机制,将那些与业务无关,但对多个对象产生影响的公共行为和逻辑,抽取并放封装成一个可重用的模块。也就是切面,通过将横切逻辑代码与业务代码分离,在不改变原因代码的基础下,将逻辑增强部分应用到原有业务中,从根本上解耦。降低大量重复的操作,降低模块之间的耦合度,提高系统的可维护性。

AOP实现

AOP的实现是基于代理模式的,主要分为静态代理和动态代理

静态代理

静态代理使用AspectJ来实现
属于编译时增强,它会在编译阶段就产生AOP的代理类,并将切面织入到字节码中,运行时的时候就是增强之后的AOP对象,性能比Spring AOP好

动态代理

动态代理则以Spring SOP为代表。
属于运行时增强,AOP框架不会修改字节码,在每次运行时都会在内存中临时为方法生成一个代理对象,这个对象包含了目标对象的所有方法,并且在特定的切点做了增强处理,并回调原有对象的方法。

动态代理主要有两种形式:JDK动态代理和CGLIB动态代码
JDK: 要求代理类实现接口
CGLIB:代理类没有实现接口,在运行时动态生成一个代理对象的子类对象,并覆盖其中特定的方法并增加增强代码,从而实现AOP

在这里插入图片描述

主要应用

安全、日志、参数校验、权限验证、事务、缓存

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

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

相关文章

【Excel】使用VBA宏简单自定义Excel软件界面

改行做经济师学习Excel,偶有心得,摘录于此,备忘。 言简意赅,仅供自用。 1 实现效果 在Excel的左上角可添加按钮,该按钮的功能可由我们自己通过编写代码定义,能实现特定功能,并且在所有打开的…

攻防世界---reverse_re3

1.下载附件,先查壳:无壳 2.在IDA中分析,shiftfnf5,看到一串长得很像flag的flag 3.根据提示我们需要找到输入,再进行md5转换才能得到flag flag{md5(your input)} 4.双击这个句话,点进去想查看信息&#xff0…

hive搭建完整教学

目录 简介准备工作安装步骤(一)、下载hive包并解压到指定目录下(二)、设置环境变量(三)、下载MySQL驱动包到hive的lib目录下(四)、将hadoop的guava包拷贝到hive(五&#…

SS3D翻译

SS3D AbstractIntroductionRelated WorkFully-Supervised 3D Object DetectionWeakly/Semi-Supervised 3D Object DetectionSparsely-Supervised 2D Object Detection MethodOverall FrameworkArchitecture of DetectorMissing-Annotated Instance Mining Module 缺失注释实例挖…

什么是好用的人才测评系统?

对于企业HR来说,在人才测评是必不可少的工具,什么是好用的人才测评? 1、测评效果靠谱;2、操作实施简便。 人才测评的目的是为找到最适合企业的人选,测评就是一个方法,一个工具,能达到预期目的才…

【笔试强训】Day3 --- 简写单词 + dd爱框框 + 除2!

文章目录 1. 简写单词2. dd爱框框3. 除2! 1. 简写单词 【链接】:简写单词 解题思路:简单模拟题,主要是处理⼀下输⼊的问题。(也可以利用string类中的find函数,但时间复杂度会偏高) #include …

FreeRTOS之静态创建任务

1.在前面的文章中介绍了FreeRTOS的动态创建方法,本文介绍一下FreeRTOS的静态任务创建方法xTaskCreateStatic()。相比较动态任务创建过程,静态创创建任务的过程稍显复杂。主要步骤为: (1)配置相关的宏定义:…

16.4 冒泡排序

题目简介 排序动画模拟网站 phttps://www.cs.usfca.edugalles/visualization/ComparisonSort.htm 简洁版 #include <stdio.h> int main() {int a[10]{9,3,6,5,8,2,4,1,7,0};int n sizeof(a)/sizeof(int);int temp 0;for(int j0;j<n-1;j){ //外层循环循环9轮即可f…

【Matlab】Sobol灵敏度分析

计算一阶灵敏度与总灵敏度 参考链接 代码如下&#xff1a; 因为随机抽样&#xff0c;每次计算结果都不同 主函数 % function main clc clear close all %% 参数设置 n_p 4; % 待分析参数数目 n_base 2000; % 参数样本数目 N n_base*(n_p*21); % 模型/函数运行总次数 % 设…

怎么在本地debug使用idea计算对象内存

在工作的过程中&#xff0c;我们遇到一个觉得比较大的对象的时候&#xff0c;经常需要判断一个对象大小&#xff0c;以此来决定是将数据放在内存还是缓存来提升性能&#xff0c;我看到现在很多文章介绍的要么是不完善&#xff0c;要么是不够准确&#xff0c;因此打算自己写一篇…

java学习路线图(全面)

以下是详细的Java学习路线图&#xff0c;涵盖了从基础到高级的必备技能和知识。 基础知识 Java基础&#xff1a;学习Java的基本语法、数据类型、控制流程语句、数组、异常处理等。面向对象编程&#xff1a;深入理解类和对象、继承、多态、封装、接口和抽象类的概念。 工具和环…

API接口开发分享:API接口接入拼多多平台采集商品详情实时数据、获取商品销量、价格、库存、名称等数据,免费接入key获取示例

要接入拼多多平台的API接口采集商品详情数据、商品销量、价格、库存、名称等数据&#xff0c;首先需要注册一个API账号。用来请求调用该api。 接下来&#xff0c;你可以使用Python等编程语言调用拼多多的API接口。以下是一个使用Python调用拼多多API接口的示例&#xff1a; i…

K8S 哲学 - yaml文件

selector&#xff1a; Pod 对象不应该有 selector 字段。selector 字段通常用于 Service、Deployment、ReplicaSet 等对象&#xff0c;用于选择匹配的 Pod。在 Pod 对象中&#xff0c;这个字段是无效的 apiVersion: apps/v1 kind: Deployment metadata: name: gyk labels: …

48-PCIE转串口和并口电路设计

视频链接 PCIE转串口和并口电路设计01_哔哩哔哩_bilibili PCIe转串口和并口电路设计 1、PCIe转串并口电路设计基本介绍 2、PCIe转串口和并口的方案(京东) 2.1、PCIe转串口 2.1.1、ASIX (亚信)MCS9922-PCIe转2路RS232扩展卡 2.1.2、ASIX (亚信)MCS9900-PCIe转4路RS232扩展卡…

【数据结构与算法】力扣 344. 反转字符串

题目描述 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a; 输入&#xff1a; s ["…

46、二叉树-二叉树展开为链表

思路&#xff1a; 方法一 1、使用先序遍历每个节点 放入集合中&#xff0c;然后遍历集合&#xff0c;左子树为null&#xff0c;右子树为下一个节点。代码如下&#xff1a; public void flatten(TreeNode root) {if (rootnull){return;}LinkedList<TreeNode> list new …

深入理解高并发超卖一系列问题与解决方案(近7万字详解,跳槽涨薪必备宝藏珍藏级分享)

破除困境带你飞 能遇上高并发的&#xff0c;基本都是有点规模的公司&#xff0c;小公司基本都是CRUD。 想去一线城市跳槽&#xff0c;想去有高并发的公司&#xff0c;但是没有高并发经验&#xff0c;没有高并发的经验&#xff0c;就去不了高并发的公司&#xff0c;去不了这样的…

什么是bs架构和cs架构

bs架构是在浏览器就能访问到的系统&#xff0c;不需要用户去更新和安装app cs架构是需要下载一个app客户端&#xff0c;每次升级都需要更新app

mysql面试题五(事务)

目录 1.mysql有哪些锁及作用 1. 行锁&#xff08;Row Locks&#xff09; 2. 间隙锁&#xff08;Gap Locks&#xff09; 3. Next-Key Locks 4. 意向锁&#xff08;Intention Locks&#xff09; 5. 表锁&#xff08;Table Locks&#xff09; 6. 元数据锁&#xff08;Metad…

【Java基础】19.继承(面向对象的三大特征:封装、继承、多态)

文章目录 前言一、继承的概念二、继承的步骤1.类的继承格式2.继承的实例3.继承类型 三、继承的特性四、继承的关键字1.extends关键字2.implements关键字3.super 与 this 关键字4.final 关键字 五、构造器 前言 一、继承的概念 继承是java面向对象编程技术的一块基石&#xff…