当前位置: 首页 > article >正文

AOP是什么?Spring Boot AOP 怎么使用?

1. Spring Boot AOP 是什么?

1.1 AOP 是什么?

  AOP是面向切面编程(Aspect-Oriented Programming)的缩写。AOP是一种编程范式,旨在通过将横切关注点(cross-cutting concerns)从主要业务逻辑中分离出来,提供一种更好的代码模块化和可维护性,换句话说,就是对某一类事情的集中处理。

  横切关注点指的是在应用程序中横跨多个模块或层的功能,例如日志记录、事务管理、安全性、缓存、异常处理等。

  例如:在不使用AOP的情况下,每个Controller都要写一遍用户登录验证。当功能越来越多的时候,需要在每个功能里都写同样的代码,这就提高了代码的修改和维护的成本。对于这种功能统一,且使用的地方较多的功能,就可以考虑AOP来统一处理了。

1.2 Spring Boot AOP 是什么?

  Spring Boot AOP是基于Spring框架和Spring AOP的AOP实现方式,专门针对Spring Boot应用程序提供的一种简化配置和使用的方式。

  Spring AOP是Spring框架提供的一种AOP实现方式。AOP是一种编程范式,而Spring AOP是Spring框架对AOP的具体实现。

2. AOP 的组成

  AOP的组成有:切面、连接点、切点、通知

2.1 切面(Aspect)

  切面是横跨一个或多个类的模块化单元,它定义了与横切关注点相关的行为。切面由切点、通知组成,它通常以类的形式表示。

2.2 切点(Pointcut)

  切点(Pointcut)在面向切面编程(AOP)中起到了选择性拦截和应用切面的作用,它可以被理解为一种规则。

比如:有一个用户对他人的文章进行评价,这时候需要检测该用户是否登录,只有登录后才能评价。这就是切点,它相当于一种规则。

2.3 通知(Advice)

  通知是切面的一部分,它是在特定切点处执行的具体操作。切面由切点和通知组成,切点用于定义在哪些连接点上应用通知的规则,而通知定义了在这些连接点上执行的具体操作。在方法上添加相应的注解就表示相应的通知:

  • 前置通知(@Before):在目标方法执行之前执行的通知。可以在该通知中进行一些准备工作或参数验证。
  • 后置通知(@After):在目标方法执行之后执行的通知。可以在该通知中进行一些清理工作或记录日志。
  • 返回通知(@AfterReturning):在目标方法成功执行并返回结果后执行的通知。可以在该通知中对方法的返回值进行处理或执行其他操作。
  • 异常通知(@AfterThrowing):在目标方法抛出异常后执行的通知。可以在该通知中处理异常或执行相应的异常处理逻辑。
  • 环绕通知(@Around):在目标方法执行之前和之后都执行的通知。它可以完全控制目标方法的执行过程,包括是否执行目标方法以及如何处理返回值和异常。

2.4 连接点(Join Point)

  连接点是指在应用程序执行过程中的特定点或事件,例如方法的调用、方法的执行、异常的抛出、属性的访问等。**它是AOP中可以插入切面逻辑的地方。**具体来说,连接点是在程序执行期间可以被拦截的点。当程序运行到某个连接点时,AOP框架可以介入并执行相应的切面逻辑。

3. Spring Boot AOP 的演示

3.1 添加 Spring Boot AOP 依赖

  添加如下的代码在 pom.xml文件中:

xml复制代码<dep
http://www.lryc.cn/news/2412716.html

相关文章:

  • PowerDesigner安装详细教程
  • python爬虫:使用xpath基础+实例
  • IIS部署 - 服务器进行项目运行
  • 网络安全:CTF入门必备之题型介绍
  • 关于TDSQL(MySQL)的简单知识分享
  • [DL]深度学习_ResNet
  • acm的详细介绍以及时间路线
  • (六十七)神经网络——MLP
  • Linux指令:find
  • C语言 strstr()函数详解加应用
  • Navicat Mysql 安装详解
  • Python图片处理模块PIL(pillow)
  • SDN学习路径——SDN架构
  • 泊松分布与随机事件:数学模型解析
  • 1 python基本语法 - List
  • 以太网及ARP协议简介
  • 游戏算法-AOI基本介绍
  • eMMC协议:深入解析eMMC HS与HS400
  • 安卓root详解(supersu,magisk原理说明)
  • 相见恨晚!一文搞清XGBoost算法
  • 前端新能优化篇之localStorage和sessionStorage的区别及其使用方式
  • 学习笔记:基于GMM的语音转换(超详细)
  • 2024最新Kali Linux入门教程(全面详细),收藏过万
  • 正确安装PaddleOCR的方法
  • smb协议讲解_SMB协议(使用说明+过程详解+抓包分析)
  • Java占位符%s
  • 学习SpringCloud-基础入门
  • AutoHotKey自动热键(三)热键的<有条件生效>与<无条件生效>
  • 规则引擎groovy
  • 大学四年,自学编程常用的10个学习网站_w3school和菜鸟教程哪个好