什么是Spring的AOP功能?

news2024/11/20 6:28:12

如果说 IOC 是 Spring 的核心,那么面向切面编程AOP就是 Spring 另外一个最为重要的核心。

AOP的定义

AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。

面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术,如下图所示ae1854e887a1437ab9565512e4db31d7.jpg

 AOP可以拦截指定的方法并且对方法增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离,比如Spring的事务,通过事务的注解配置,Spring会自动在业务方法中开启、提交业务,并且在业务处理失败时,执行相应的回滚策略。

AOP的作用

AOP 采取横向抽取机制(动态代理),取代了传统纵向继承机制的重复性代码,其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。

主要作用是分离功能性需求和非功能性需求,使开发人员可以集中处理某一个关注点或者横切逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性。

简单的说,AOP 的作用就是保证开发者在不修改源代码的前提下,为系统中的业务组件添加某种通用功能。7eeed4051c774d1f8c3084dbedc67f5b.jpg

 Spring AOP三种使用方式

AOP编程其实是很简单的事情,纵观AOP编程,程序员只需要参与三个部分:

1、定义普通业务组件

2、定义切入点,一个切入点可能横切多个业务组件

3、定义增强处理,增强处理就是在AOP框架为普通业务组件织入的处理动作

所以进行AOP编程的关键就是定义切入点和定义增强处理,一旦定义了合适的切入点和增强处理,AOP框架将自动生成AOP代理,即:代理对象的方法=增强处理+被代理对象的方法。

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

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

相关文章

学会这3个小技巧,轻松去图片水印

有些小伙伴在浏览个别平台时,会看到一些心水的图片,就想保存下来,拿来当头像壁纸,或是发朋友圈时用来配图。但是有些图片下载后会发现自带着平台水印,虽然理解它们是为了保护自身权益,但我们并不是进行商用…

【Java实战】大厂都是怎样进行单元测试的

目录 一、前言 二、单元测试 1.【强制】好的单元测试必须遵守 AIR 原则。 2.【强制】单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。不…

微服务的灰度发布就该这样设计

实际生产中如有需求变更,并不会直接更新线上服务,最通常的做法便是:切出线上的小部分流量进行体验测试,经过测试后无问题则全面的上线。 这样做的好处也是非常明显,一旦出现了BUG,能够保证大部分的客户端正…

Hygieia (Devops)开源-搭建步骤(一)

什么是Hygieia Hygieia出现在两个独立的仪表板中-一个用于工程师,另一个用于高管-直观地描绘了CICD管道。本质上,Hygieia本身是一个聚合器,可从团队在其CICD管道中使用的各种DevOps工具中提取数据,从而使其易于在仪表板视图中进行…

Docker搭建私有镜像仓库及推送、拉取私服镜像

1.搭建私有镜像仓库 搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。 1.1 简化版镜像仓库 Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。 搭建方式比较简单,命令…

【配准:泛锐化】

SIPSA-Net: Shift-Invariant Pan Sharpening with Moving Object Alignment for Satellite Imagery (SIPSA-Net:卫星影像平移不变平移锐化与运动目标对齐) 全色锐化是合并高分辨率(HR)全色(PAN&#xff0…

SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel

一、前言 今天小编带大家一起整合一下easyExcel,之所以用这个,是因为easyExcel性能比较好,不会报OOM! 市面上常见的导入导出Excel分为三种: hutooleasyExcelpoi hutool和easyExcel都是对poi的封装,使用…

(12)点云数据处理学习——表面重建

1、主要参考 (1)官网的介绍 Surface reconstruction — Open3D 0.16.0 documentation (2)大佬的blog 三维点云重建 — open3d python_Coding的叶子的博客-CSDN博客_三维点云重建 (3)视频 Surface Rec…

一种隐私保护边云协同训练

研究背景 在边缘AI领域,联邦学习概念最先由google提出并在学界和业界得到广泛的讨论和发展。对于边缘AI,数据异构和数据隐私是两个主要的挑战,而将联邦学习应用在边缘计算中,可以协助解决这些挑战。FedAvg通过主动选择每一轮参与训…

Linux MySQL下载安装

介绍 查询当前系统中安装的所有软件 rpm -qa1. mysql的下载 1.1 查询当前系统中安装的名称带mysql的软件 rpm -qa | grep mysql如下所示没有输出说明是没有安装mysql 1.2 查询当前系统中安装的名称带mariadb的软件(如果有则卸载) rpm -qa | grep mariadb如下所示表示有ma…

Flink系列之Flink中StateBackend深入剖析和应用

title: Flink系列 一、Flink StateBackend 深入剖析和应用 ​ StateBackend 定义了状态是如何存储的,不同的 State Backend 会采用不同的方式来存储状态,核心入口是: StateBackend, Flink 提供了三种不同形式的存储后端&#xff…

Antd React UMI 配置优化 - 优化打包体积,提高打包速度

随着项目越来越大,打包后的体积很大,打包时间也很长,部署一次基本上要等十分钟左右。那么如何来优化打包体积和提高打包速度呢?一起来看看吧~ 优化前打包体积分析 优化前个模块体积: 通过脚本命令&#x…

年产2万吨山楂酒工厂的设计—原料前处理工段及车间的设计(lunwen+cad图纸)

目 录 1前 言 1 1.1设计背景及目的 1 1.1.1山楂酒的介绍及功效 1 1.1.2目标人群 1 1.1.3发展前景 2 1.2设计依据 2 1.3设计内容 2 1.4原材料的选择 3 2工艺流程设计 5 2.1工艺流程的确定 5 2.2分选 6 2.3清洁消毒 8 2.4去核 9 2.4.1去核机的介绍及选择 9 2.4.2山楂核的处理 10 …

MQ 概念介绍 / 配置以及原理 简书

文章目录 1、什么是MQ 2、MQ的多种产品 3、MQ的工作原理 4、ActiveMQ 的配置 5、ActiveMQ 的数据存储方式 6、ActiveMQ的主从服务 7、ActiveMQ的集群负载均衡 什么是MQ? Message Queue, 就是消息队列,MQ 经常会作为多系统当中的网络消息传输。是…

负载均衡式在线OJ判题系统

文章目录负载均衡式在线OJ1. 演示项目2. 所用技术及开发环境所用技术:开发环境3. 项目宏观设计I. leetcode结构II.宏观结构III.编写思路4. compiler服务1. 编译功能:2. 运行功能3. 编译并运行功能4. 打包成一个网络服务5. 基于MVC结构的oj服务设计1. 用户…

Java IO流(详解)

1. File1. 创建2. 操作1. 获取文件信息2. 目录创建/删除2. IO流1. FileInputStream1. 简单使用2. 读取中文2. FileOutputStream1. 简单使用2. 追加写入3. 文件拷贝4. FileReader1. 简单使用2. 提高读取速度5. FileWriter1. 简单使用6. 节点流和处理流简介7. BufferedReader1. 简…

产品开发需要考虑哪些场景

产品到项目中去,也从项目中来,也就是说产品开发后最终都是会到项目中历练,然后吸取项目中的优点,来补全产品中业务的不足、功能的不足,让产品更加完善,最终成为精品。 每个产品的形成都要多加考虑&#xf…

Github 用户查询案例【基于Vue2全局事件总线通信】

前言: 本次案例是一个基于 Vue2 的全局事件总线通信的仿 Github 用户搜索模块,使用的接口是 Github 官方提供的搜索接口: https://api.github.com/search/users?qxxx(发送请求时需要将输入的用户名称绑定替换掉xxx)&a…

HTML期末学生大作业-宠物之家网页作业html+css+javascript

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

仪表板支持水印设置,数据集新增脱敏规则支持,DataEase开源数据可视化分析平台v1.17.0发布

12月5日,DataEase开源数据可视化分析平台正式发布v1.17.0版本。 这一版本的功能升级包括:数据集方面,支持将数据集数据按指定条件导出为Excel文件,方便用户对权限范围内的数据进行二次处理。数据集字段支持日期解析格式设置&…