SpringBoot自定义注解(基于SpringAOP实现)
在网上看到好多关于此话题的博客要么资料不全,要么过于复杂,导致新手很难直接的理解!所以自己上手整理一个简单的demo放于git,有想用的在博客末尾直接点击下载即可直接运行使用!
一、JoinPoint的用法
JoinPoint对象封装了SpringAop中切面方法的信息,在切面方法中添加JoinPoint参数,可以获取到封装了该方法信息的JoinPoint对象!
方法名 | 作用 |
---|---|
getSignature(); | 获取封装了署名信息的对象,在该对象中可以获取到目标方法名,所属类的Class等信息 |
getArgs(); | 获取传入目标方法的参数对象 |
getTarget(); | 获取被代理的对象 |
getThis(); | 获取代理对象 |
二、ProceedingJoinPoint对象
ProceedingJoinPoint对象是JoinPoint的子接口,该对象只用在@Around的切面方法中使用
Object proceed() throws Throwable //执行目标方法
Object proceed(Object[] var1) throws Throwable //传入的新的参数去执行目标方法
三、实现Demo简述
1、首先需要引入Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.5.1</version>
</dependency>
2、定义一个自己使用的注解(注意定义类型)
简单说下其中注解的含义:
名称 | 含义 |
---|---|
@Documented | 指明修饰的注解 |
@Retention | 指明修饰的注解的生存周期,即会保留到哪个阶段 |
@Target | 指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里 |
具体的取值可以点进源码稍微看下就知道了很简单! |
3、定义一个切面类
4、定义一个controller 供测试使用
完成上述步骤即可实现基于springAOP的自定义注解的demo!!!!
附上实现demo完整java代码Git地址!!!
地址(简单demo): https://gitee.com/zhangwu2020/springboot-annotation.git(克隆至本地后根据README.md提示即可运行!!)
地址(简单项目应用): https://gitee.com/zhangwu2020/springboot-annotation-demo.git(克隆至本地后根据README.md提示即可运行!!)
本篇完结