简单的aop环绕通知的案例(⾃定义注解形式)⾃定义注解
@Target(ElementType.METHOD)//  表⽰注解的使⽤范围
@Retention(RetentionPolicy.RUNTIME)//  注解的声明周期
@Documented
public@interface CheYuHang {
//  定义前缀
String prefix()default"cache";
}
切⾯类
/**
* @author cheyuhang on 2021/11/08
*/
@Component
@Aspect
public class LogAspect {
@Around("@annotation(com.baizhi.springboot_st.aop.CheYuHang)")
public Object around(ProceedingJoinPoint joinPoint)throws Throwable {
MethodSignature signature =(MethodSignature) Signature();
Method method = Method();
System.out.println("获取⽅法的名字"+Name());
CheYuHang annotation = Annotation(CheYuHang.class);
System.out.println("获取⽅法注解前缀"+annotation.prefix());
System.out.println("获取⽅法的返回值类型"+ReturnType());
Class<?>[] parameterTypes = ParameterTypes();
for(Class<?> parameterType : parameterTypes){
System.out.println("获取⽅法的参数类型"+parameterType);
}
Object[] args = Args();
for(Object arg : args){
System.out.println("⽅法的参数值为"+arg);
}
return joinPoint.proceed(args);
}
}
服务类
/**
* @author cheyuhang on 2021/11/08
*/
@Component
public class TestAop {
@CheYuHang(prefix ="cache")
public Integer test(int a,int b){
System.out.println("");
return a+b;
}
}
控制层(controller)
@GetMapping("/test")
public void test(){
springboot aopSystem.out.println(".");
Integer test = st(1,1);
System.out.println("执⾏结果为"+test); }
执⾏结果
<.
获取⽅法的名字test
获取⽅法注解前缀cache
获取⽅法的返回值类型class Integer 获取⽅法的参数类型int
获取⽅法的参数类型int
⽅法的参数值为1
⽅法的参数值为
执⾏结果为2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。