springboot注解式AOP通过JoinPoint获取参数 学习笔记

之前开发时,需要获取切点注解的参数值,记录一下

切面注解 :
@Aspect – 标识为一个切面供容器读取,作用于类
@Pointcut – (切入点):就是带有通知的连接点
@Before – 前置
@AfterThrowing – 异常抛出
@After – 后置
@AfterReturning – 后置增强,执行顺序在@After之后
@Around – 环绕

1.相关maven包

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

2.自定义一个注解

import java.lang.annotation.*;@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Action {String value() default "list";
}

3.定义切面类

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;@Aspect
@Component
public class ActAspect {@AfterReturning("@annotation(包名.Action)")public void afterReturning(JoinPoint point){// 获取切入点方法名String methodName = point.getSignature().getName();// 获取注解中的参数值MethodSignature methodSignature = (MethodSignature)point.getSignature();Method method = methodSignature.getMethod();// 获取注解Action Action annotation = method.getAnnotation(Action.class);// 获取注解Action的value参数的值String value = annotation.value();// 获取切点方法入参列表Object[] objArray = point.getArgs();// 下面代码根据具体入参类型进行修改List<String> list = new ArrayList<>();for (Object obj: objArray) {if(obj instanceof Collection){list = (List<String>) obj;}}}}

参考博客:

https://blog.csdn.net/zhanglf02/article/details/78132304
https://www.tpyyes.com/a/javaweb/181.html
https://blog.csdn.net/qq_35098526/article/details/88397657

springboot注解式AOP通过JoinPoint获取参数 学习笔记相关推荐

  1. 十、springboot注解式AOP(@Aspect)统一日志管理

    springboot注解式AOP(@Aspect)统一日志管理 简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功 ...

  2. ihtml2document能不能根据id获取dom_JavaScript学习笔记(十三)-- DOM(上)

    DOM(上) DOM(Document Object Model): 文档对象模型 其实就是操作 html 中的标签的一些能力 我们可以操作哪些内容 获取一个元素 移除一个元素 创建一个元素 向页面里 ...

  3. python读取html内容 dom获取_python学习笔记十三 JS,Dom(进阶篇)

    JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...

  4. 推荐系统三十六式(刑无刀)学习笔记(三)

    03 | 这些你必须应该具备的思维模式 今天主要认识两方面的内容:一个是重新认识推荐系统关键元素的重要性,另一个是要建立起两个思维模式. 对关键元素重要性的认识 要开发一个推荐系统产品,有这么四个关键 ...

  5. 获取编译学习笔记 (十三)—— 外部中断

    疯狂暑期学习  汇编入门学习笔记 (十三)--  外中断 參考: <汇编语言> 王爽 第15章 1.外中断信息 外中断分为可屏蔽中断和不可屏蔽中断 可屏蔽中断 先看看内中断所引发的中断过程 ...

  6. 推荐系统三十六式(刑无刀)学习笔记(一)

    你真的需要个性化推荐系统吗? 个性化推荐已经从一个非常小众的方向,演变成了今天互联网产品的常见"配件".再加上一些以"个性化"为品牌卖点的互联网产品的成功,也给 ...

  7. 推荐系统三十六式(刑无刀)学习笔记(四)

    04 | 画鬼容易画人难:用户画像的"能"和"不能" 做好一个推荐系统,总共分为三步:1.认识每一个用户:2.给他推荐他感兴趣的东西:3.坐等各项指标上升. 什 ...

  8. SpringBoot 注解方式快速整合Mybatis

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:yizhiwazi www.jianshu.com/p/82 ...

  9. NASM学习(二)——从命令行获取参数

    NASM学习(二)--从命令行获取参数 学习汇编的目的是增强自己对硬件体系的熟悉与编译.链接等等阶段的熟悉 上文我们已经学会了怎么使用NASM来打印HELLO,WORLD了,总结一下,主要是使用系统调 ...

  10. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

最新文章

  1. leecode---46---数组,dfs---求出数组的所有组合
  2. c#中在规定时间弹出窗体
  3. 线程池ExcutorThreadPool的运行原理
  4. linux下wget命令(下载文件命令)
  5. Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新
  6. 今天的方灵起床了的飞鸽传书2011
  7. raspberry pi_前5名:替代密码,Raspberry Pi进入太空等等
  8. 湖南师范大学数学与计算机学院郭水霞,湖南师范大学数学与计算机科学学院2013备考手册...
  9. Pandas入门教程(六)
  10. stardict词典全集
  11. 计算机控制鼠标,键盘控制鼠标,详细教您如何使用键盘来控制鼠标
  12. 阿里云域名怎么注册和使用(新手教程)
  13. 用户登录页面以及后台方法、拦截器
  14. 第二周:java异常和常用类 容器
  15. 图片的居中定位和按钮定位
  16. php网站mercury安装,水星路由器怎么安装?Mercury无线路由器安装示意图解
  17. 关于电子科技大学学生阅读情况调查报告
  18. 0x80073712_更新系统发生0x80073712错误,怎么解决?
  19. 关于组培的一些想法(求知解惑),多肉科普
  20. 02-nation.sql

热门文章

  1. Asp.net页面传值
  2. 如何设置高度为1的分隔线
  3. Java- String类概述
  4. Xamarin.Forms 仿照京东搜索记录控件
  5. 30. Child Labor Problem and Its Solution 童工问题及解决方法
  6. filebeat+redis+logstash+elasticsearch+kibana搭建日志分析系统
  7. 隐马尔可夫模型HMM(一)
  8. 在C#中使用SQL语句什么情况需要使用‘单引号’和“双引号”
  9. Javascript中的执行环境及作用域
  10. EXECUTE IMMEDIATE oracle介绍