Spring Boot 进阶-Spring Boot如何整合AOP实现自定义注解

embedded/2024/10/15 15:37:23/

在这里插入图片描述
  通过之前的文章,我们知道在Spring Boot中使用了大量的注解,而对于注解大家应该不陌生。

  Java注解是在JDK1.5的时候引入的新特性,它提供了一种类似注释的机制,用来将任何的信息或者元数据与类、方法,或者是成员变量来进行关联。在注解中附带了一些信息,这些信息可以在编译、运行的时候对代码起到帮助说明以及配置的功能。

  在Java中将注解分为了标准注解、元注解和自定义注解三种。这篇文章中我们主要是通过自定义的方式通过AOP技术来实现在Spring Boot中对于程序的高级控制。

AOP介绍

  首先什么是AOP?AOP即面向切面编程,是在Spring 中提供的核心功能之一,其主要的目的是实现对业务功能的横向扩展操作,从而达到低耦合的效果。

  在后台应用开发的过程中,一个比较经典的使用就是在我们的业务系统中进行日志记录功能。日志操作功能在应用中算是辅助性的功能,不需要一遍一遍的重新开发,所以我们需要完成的操作就是通过AOP技术来实现日志切面,AOP操作可以在不改变任何逻辑的基础上实现对应用的基础功能进行扩展的操作。

AOP中的相关概念

  对于AOP中的这些概念,也是面试的时候面试官比较爱问的问题。想要理解Spring Boot 整合AOP技术,那么就要了解在AOP中都有哪些概念,不然在后续利用它实现一些功能的时候也很难理解对应的功能是什么意思。

  下面我们就通过下面这张图来理解AOP相关概念
在这里插入图片描述
  切面(Aspect): 一个业务点的模块化功能,例如通过@Aspect注解标注的类,就可以被称为是一个切面。

  连接点(Joinpoint):在程序中需要在某个特定功能上执行的代码区域,例如某个方法调用的时候或者是在进行异常处理的时候。

  通知(Advice):业务增强,需要完成业务的功能叫做通知,也就是在业务逻辑中需要添加的日志、事务等操作需要先定义好,然后再到需要的地方去进行执行。业务增强包括了如下的五个方面

  • @Before:在切点之前执行操作
  • @After:在切点之后执行操作
  • @AfterReturning:在切点方法执行返回之后
  • @AfterThrowing:在切点方法抛出异常之后
  • @Around:环绕增强,也就是在切点的执行前、执行后、抛出异常的时候等等。这个注解会影响到@AfterThrowing注解。

  切点(Pointcut):切点就是通过筛选的连接点,匹配连接点有个规则,用来判断是否是切点,通过筛选的方法即可作为切点来实现。

  引入(Introduction):在不改变现有代码的情况下,为对应的类添加方法或者是属性的操作。也就是说将切面引入到对应的需要操作的目标类中。

  目标对象(Target Object):被一个或者多个切面通知的对象,Spring AOP是通过代理设计模式实现,既然它选择代理这个对象,那么这个对象就是被永久代理的对象。

  AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面操作,在Spring中AOP操作可以通过JDK的动态代理或者是CGLIB来实现。

  织入(Weaving):把切面连接到其他的应用程序的类型或者对象上的操作,通过这个操作 创建一个被通知的对象,这个操


http://www.ppmy.cn/embedded/127929.html

相关文章

QT文件操作【记事本】

mainwindow.h核心函数 QFileDialog::getOpenFileName()QFileDialog::getSaveFileName() #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QFileDialog> #include<QMessageBox> #include<QDebug> #include<QFile> #…

PHP-FPM和FastCGI

文章目录 前言一. FastCGI1.定义2.工作方式3.协议4.架构5.工作原理&#xff08;请求生命周期&#xff09; 二. PHP-FPM1.定义&#xff1a;2.特性3.进程管理模式4.工作流程 三.关系与应用四.配置示例五.性能优化六.配置选项七.常见问题及解决方案 前言 PHP-FPM 是基于 FastCGI …

【计算机网络 - 基础问题】每日 3 题(四十)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

【原创】可用于 Android Studio 的翻译插件

在不少讲解Android 开发的老师视频中会出现一个运行在Android Studio 上的翻译插件&#xff0c;感觉挺实用的。 接下来&#xff0c;我们把它安装在我们的Android Studio 上。 设置 点击右上角齿轮按钮&#xff0c;选择Settings 安装 翻译插件 输入Tanslation&#xff0c;选…

计算机网络:数据链路层 —— 以太网(Ethernet)

文章目录 局域网局域网的主要特征 以太网以太网的发展100BASE-T 以太网物理层标准 吉比特以太网载波延伸物理层标准 10吉比特以太网汇聚层交换机物理层标准 40/100吉比特以太网传输媒体 局域网 局域网&#xff08;Local Area Network, LAN&#xff09;是一种计算机网络&#x…

Java设计模式——装饰模式

目录 模式动机 模式定义 模式结构 类图 代码分析 示例&#xff1a;动态添加功能的流 组件接口 具体组件 装饰抽象类 具体装饰类 客户端 模式分析 核心思想 动态扩展功能 组合优于继承 优点 动态扩展功能 组合优于继承 代码复用性高 符合开闭原则 缺点 增加…

打破传统:机器学习与神经网络获2024年诺贝尔物理学奖引发的思考

诺贝尔物理学奖首次颁发给机器学习与神经网络领域的研究者&#xff0c;这一结果无疑引起了广泛关注&#xff0c;并引发了大量的讨论与思考。作为一项传统上旨在表彰对自然科学&#xff0c;尤其是物理学领域作出突出贡献的奖项&#xff0c;这次将荣誉授予一个长期与计算机科学、…

四川方维嘉术科技有限公司简介

四川方维嘉术科技有限公司 公司简介 四川方维嘉术科技有限公司成立于2023年&#xff0c;注册资本100万元整&#xff0c;位于中国西南地区的中心位置&#xff0c;是一家专注于供应医疗设备、高值耗材并提供医疗方面解决方案的企业。 【主要代理产品】 湖南瑞康通 &#xff1…