AOP注解方式进行增强接口

news2025/6/12 19:08:36

📚目录

    • 📚简介:
    • 💨进阶版
      • 🗺️未实现AOP效果
      • 🎢创建注解:
      • 💭创建注解切面
      • 🚀使用方式:
    • 🎉结束:

📚简介:

      需要对AOP有一点了解的情况下看进阶的内容才容易懂一些点击查看往期AOP内容,然后前一篇写的比较基础些通常在业务多变的情况下可能会有多个业务也需要设置相同的切面达到方法的增强,这个时候可能方法就不在同包下或者方法名称又不一致导致切面表达式execution会不知道怎么写或者配置起来会更麻烦。
      那么我们可以试着用注解的方式来设置切面,只需要在对应的方法上添加注解即可得到切面的增强。

项目包结构:

在这里插入图片描述

配置信息:

在这里插入图片描述

启动服务:

在这里插入图片描述

💨进阶版

接下来通过项目来带大家理解注解AOP带来的便利
      现在我有个商品控制层调用接口后会修改商品信息,然后我现在要对接口增强在请求接口时我需要保存请求方发送的请求参数信息等。

🗺️未实现AOP效果

未实现AOP效果示例

我把请求参数也打印出来
在这里插入图片描述

使用软件调用接口:

在这里插入图片描述
在这里插入图片描述
接下来按照需求完成请求接口获取请求参数信息等操作。

🎢创建注解:

创建注解:

在这里插入图片描述

元注解解释:
@Target({ ElementType.PARAMETER, ElementType.METHOD })//注解可以添加在哪个:ElementType.PARAMETER 可以添加到方法参数 ElementType.METHOD 可以添加到方法上
@Retention(RetentionPolicy.RUNTIME)//注解的生命周期是在运行时

/**
 * @Author itmei
 * @Date 2022/12/19 14:56
 * @description: 日志注解
 * @Title: Log
 * @Package com.itmei.springaopanno.annotation
 */
@Component
@Target({ ElementType.PARAMETER, ElementType.METHOD })//注解可以添加在哪个:ElementType.PARAMETER 可以添加到方法参数 ElementType.METHOD 可以添加到方法上
@Retention(RetentionPolicy.RUNTIME)//注解的生命周期是在运行时
@Documented//用于生成文档使用的
public @interface Log {

    /**
     * 记录的标题
     * @return
     */
    public String title() default "";

    /**
     * 是否开启记录
     * @return
     */
    public boolean isOpen() default true;
}

💭创建注解切面

在这里插入图片描述
@Before(value = "@annotation(log)")其中value中@annotation(log)填写的是注解,我们需要在方法参数里面添加这个注解这样切面就会以注解为准把添加了注解的方法进行增强了。

/**
 * @Author itmei
 * @Date 2022/12/19 15:10
 * @description: 切面注解
 * @Title: LogAspect
 * @Package com.itmei.springaopanno.config
 */
@Component
@Aspect
@Order(1)
public class LogAspect {

    @Before(value = "@annotation(log)")
    public void logBefore(JoinPoint joinPoint, Log log){
        System.out.println("----AOP增强接口----");
        System.out.println("请求接口参数:"+Arrays.asList(joinPoint.getArgs()));
        System.out.println("接口的标题是:"+log.title());
    }
}

在这里插入图片描述

🚀使用方式:

      使用方式就很简单了,在需要的接口中添加我们自己定义的注解即可
在这里插入图片描述

运行效果:

在这里插入图片描述
      这个时候又有另外一个接口需要使用这个切面,也是只要在接口上添加即可。

在这里插入图片描述
      这样我们就可以对一种业务相同的情况下创建一个注解切面来对接口增强就非常省力了。

🎉结束:

到这里使用注解AOP方式就结束了,希望可以给你带来帮助。

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

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

相关文章

【电商】电商系统---供应商管理

本文以电商系统中的供应商管理为讨论对象,分析了其中的管理、属性、流程等内容,希望能给你带来启发与思考。 前言 前天写了一篇“以商品流转了解系统模块”介绍,里面啰里啰唆的说了很多模块,每个都是系统的组成部分,都…

数字化程度持续推进,元宇宙逐步走向成熟

元宇宙是人类数字化生存的最高形态 根据观研报告网发布的《2022年中国元宇宙行业分析报告-行业现状与发展趋势分析》显示,元宇宙是一个平行于现实世界,又独立于现实世界的虚拟空间,是映射现实世界的在线虚拟世界,是越来越真实的数…

美国访问学者签证材料清单

美国访问学者签证材料清单: 1、有效护照:如果您的护照将在距您预计抵美日期的六个月内过期、或已损坏、或护照上已无空白的签证签发页, 请在前来面谈之前先申请一本新护照。 2、一张照片:于6个月内拍摄的5 X5厘米正方形白色背景的彩色正面照。请将照片用…

【多聚焦图像:GAN:无监督】

MFF-GAN: An unsupervised generative adversarial network with adaptive and gradient joint constraints for multi-focus image fusion (MFF-GAN: 具有自适应和梯度联合约束的无监督生成对抗网络,用于多焦点图像融合) 从梯度的角度来进行…

【蓝桥杯】第12届Scratch国赛中级组第7题 -- 博士汪出题

[导读]:蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事。蓝桥杯大赛首席专家倪光南院士说:“蓝桥杯以考促学,塑造了领跑全国的人才培养选拨模式,并获得了行业的深度认可。” 春雷课堂计划推出Scratch蓝桥杯…

业务中台的架构案例

业务中台目标 目标: 整体目标:高内聚、低耦合,便于开发和维护。五个方向:性能、可用性、扩展性、伸缩性、安全性。 原因: 单体架构的大泥球会导致业务迭代困难、无法针对性伸缩、故障没有隔离等问题,需要向…

Python核心编程三大神兽——迭代器、生成器 、以及装饰器

装饰器 装饰器概述 装饰器本质:函数闭包的语法糖,一个函数,该函数用来处理其他函数,在不改变源函数的情况下添加功能,装饰器的返回值可以是一个函数对象 使用场景:插入日志,事务处理&#xf…

网心科技入选亿欧《2022年中国边缘计算产业研究报告》

近日,亿欧智库对外发布了《2022年中国边缘计算产业研究报告》,《报告》公布了“边缘计算产业图谱”和“行业新锐:中国边缘计算技术领先企业榜单”两项,网心科技(OneThing)均成功入选,彰显了网心科技在边缘计算领域的技术实力和市场领先地位。 当前,边缘计算与千行百业的深度融合…

51单片机实训day2——创建Keil工程

以管理员身份打开软件!!!以管理员身份打开软件!!!以管理员身份打开软件!!! 内 容:Keil工程创建 学 时:2学时 知识点:开发固件库介绍…

从英语翻译到人工智能:我如何用两年时间跨界转行

在这两年里,我经历了以下大大小小的里程碑: 2016 年初:在德国刚开始读英语语言学硕士没多久,萌生了转方向到计算机语言学(Computational Linguistics,后来我才知道那与自然语言处理 Natual Language Proces…

【树莓派不吃灰】兄弟连篇⑦ 日志管理

目录1.日志管理1.1 日志文件的功能和分类1.2 日志文件保存位置和文件介绍1.3 内核及系统日志1.4 日志消息的级别1.5 日志记录的一般格式1.6 用户日志分析1.6.1 users 查看能登录的用户1.6.2 who,w查看在线登录的用户1.6.3 last,lastb查看登录成功的用户和登录失败的用户1.7 日志…

为什么现在Python在量化交易中这么火?

前言 Python作为发展较快的编程语言,可以让程序员更加高效地工作和集成系统。Python的语法也是优先考虑了可读性,同时支持较少的代码行。 一般来说,Python语言是中低端量化交易平台最普遍的选择。中低端量化交易平台,支持复杂度…

40 CPP函数模板高级

#include "iostream" using namespace std; template <typename T1, typename T2> void func(T1 a, T2 b) {//其它代码??? tmp a b; //返回值该用什么呢?//其它代码 } void test() { } int main() {test();return 0; } 1 decltype关键字 在C中&#xf…

工控CTF之协议分析1——Modbus

协议分析 流量分析 主要以工控流量和恶意流量为主&#xff0c;难度较低的题目主要考察Wireshark使用和找规律&#xff0c;难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律&#xff0c;难可以难得五花八门 常见的工控协议有&#xff1a;Modbus、MMS、IEC60870、…

猿如意中的【Parrot-树莓派-5.0 arm64位 】工具框架的介绍详情

目录 一、工具名称 二、下载安装渠道 2.1 什么是猿如意&#xff1f; 2.2 如何下载猿如意&#xff1f; 三、工具介绍 四、Parrot-树莓派-5.0 arm64位功能介绍 五、软件安装过程 5.1 如何在猿如意中下载开发框架Parrot-树莓派-5.0 arm64位&#xff1f; 5.2 下载完成的Pa…

JMeter中如何简单地使用cookie

JMeter是一个集接口调试和性能测试于一体的测试工具&#xff0c;是很多技术型测试人员的必备工具&#xff0c;下面介绍一个如何简单地在JMeter中使用cookie登录一个网站并进行简单断言&#xff0c;拿广大测试人员最熟悉的51testing论坛来举例~ 一、收集登录数据 1.用Chrome打…

真正“自学”入门编程/程序员是一种怎样的体验

当年没考上大学&#xff0c;读了自考。 从那以后就开始了自学生涯&#xff0c;第一年还乖乖的去听课&#xff0c;第二年就完全放弃课堂了。 后来考本&#xff0c;读研&#xff0c;中间穿插学点通信&#xff0c;画图什么的&#xff0c;全部自己来。 仔细想想&#xff0c;读研…

我转行前端花了11个月

当你看到这行文字时&#xff0c;我假设你是一个准备转行前端&#xff0c;或者正在转行前端的人。我刚花了11个月转行前端。和你聊聊我的故事吧。 转行花了多久&#xff1f;11个月 准备转行前端时&#xff0c;我看了很多过来人写的转行经验。别人什么条件&#xff0c;转行花了…

SpringBoot3.0整合chatGPT

导读 导读 | 12月总体来说互联网的技术圈是非常热闹的&#xff0c;chatGPT爆火&#xff0c;SpringBoot3.0发布等重磅陆消息续进入大家的视线&#xff0c;而本文作者将以技术整合的角度&#xff0c;带大家把最火的两个技术整合在一起。读完本文&#xff0c;你将熟悉SpringBoot3…

(2022年12月最新)SpringBoot远程代码执行whitelabel error page SpEL RCE漏洞复现

1、 漏洞原理 spring boot 处理参数值出错&#xff0c;流程进入org.springframework.util.PropertyPlaceholderHelper 类中 此时 URL 中的参数值会用 parseStringValue 方法进行递归解析。其中 ${} 包围的内容都会被org.springframework.boot.autoconfigure.web.ErrorMvcAutoC…