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

String AOP

AOP

AOP(Aspect Object programmar) 面向切面编程,它是对某一类问题的统一处理,而StringAOP就是AOP思想的一种具体实现就像Ioc和DI。

AOP组成

切面(Aspect)

切⾯(Aspect)由切点(Pointcut)和通知(Advice)组成,它既包含了横切逻辑的定义,也包
括了连接点的定义

切⾯是包含了:通知、切点和切⾯的类,相当于 AOP 实现的某个功能的集合

切点(Pointcut)

Pointcut 是匹配 Join Point 的谓词。
Pointcut 的作⽤就是提供⼀组规则(使⽤ AspectJ pointcut expression language 来描述)来
匹配 Join Point,给满⾜规则的 Join Point 添加 Advice

切点相当于保存了众多连接点的⼀个集合(如果把切点看成⼀个表,⽽连接点就是表中⼀条⼀条
的数据)

连接点(Join Point)

应⽤执⾏过程中能够插⼊切⾯的⼀个点,这个点可以是⽅法调⽤时,抛出异常时,甚⾄修改字段
时。切⾯代码可以利⽤这些点插⼊到应⽤的正常流程之中,并添加新的⾏为

连接点相当于需要被增强的某个 AOP 功能的所有⽅法。

通知(Advice)

切⾯也是有⽬标的 ——它必须完成的⼯作。在 AOP 术语中,切⾯的⼯作被称之为通知

StringAOP具体使用

  1. 添加StringAOP框架支持
  2. 定义切面和切点
  3. 实现通知
    当创建好StringBoot项目后,在pom.xml中添加StringAOP框架,从maven中央仓库下载AOP的依赖
    在这里插入图片描述

在这里插入图片描述

@Aspect,@Pointcut(“execution(…)”)

在这里插入图片描述
通知有五种

  1. 前置通知(@Before):通知方法会在具体方法之前调用
  2. 后置通知(@Afther):通知方法会在具体方法之后调用
  3. 异常通知(@AfterThrowing):通知方法会在具体方法报出异常后调用
  4. 返回通知(@AfterReturning):通知方法会在具体方法返回后调用
  5. 环绕通知(@Around):通知包裹了被通知的⽅法,在被通知的⽅法通知之前和调⽤之后执
    ⾏⾃定义的⾏为。
    在这里插入图片描述

总结

AOP 是对某⽅⾯能⼒的统⼀实现,它是⼀种实现思想,Spring AOP 是对 AOP 的具体实现,SpringAOP 可通过 AspectJ(注解)的⽅式来实现 AOP 的功能,Spring AOP 的实现步骤是:

  1. 添加 AOP 框架⽀持。
  2. 定义切⾯和切点。
  3. 定义通知。

概念很抽象,最好找个老师/前辈讲解或者看视频讲解.


http://www.kler.cn/a/16965.html

相关文章:

  • python魔术方法的学习
  • 深入理解接口测试:实用指南与最佳实践5.0(三)
  • 如何从头开始构建神经网络?(附教程)
  • Springboot 日志处理(非常详细)
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • MyBatisPlus 用法详解
  • 【代码随想录】刷题Day14
  • Linux之【多线程】生产者与消费者模型BlockQueue(阻塞队列)
  • Linux安装flutter
  • 基于UDQ的并网单相逆变器控制【同步参考系下单相并网全桥正弦PWM逆变器闭环控制】(Simulink)
  • 2022年度项目管理软件排名揭晓:哪些软件在市场中脱颖而出?
  • 模型实战(10)之win10下tensorRT部署yolov5算法
  • matlab all函数详解
  • 嵌入式 Qt 移植教程
  • 从零开始实现 std::string:让你更深入地了解字符串的本质
  • OpenCV学习小记
  • 递归思路讲解
  • C/C++开发神器CLion全新发布v2023.1——新软件包管理解决方案
  • python语法入门到面向过程编程(七)
  • QML动画分组(Grouped Animations)
  • 6. 计算机网络
  • synchronized用法加锁原理
  • 深入浅出C++ ——异常
  • Ubuntu 安装和配置 Samba服务开启共享文件夹
  • 【光伏预报/太阳能预报】上海道宁与Solargi为您提供开发地理数据库模拟工具和网络服务
  • 关于项目移植过程中,如何在不修改java源程序的情况下,如何适应新环境下的mysql