一、aop概念
面向切面编程
参考:https://blog.csdn.net/lhj520cb/article/details/125820513
常用术语解释(根据代码理解的):
Aspect(切面):Advice 通知(即增强)和 Pointcut 切点的结合。(数学上可以理解为无数个点组成面,所以aop中一个切面也可以有若干个切点)
point cut(切点):切点是指增强(Advice)所要织入(Weaving)的具体位置
advice(增强): 所要增强的功能,它与切点 point cut 绑定关联在一起
Weaving(织入) 我的理解是,增强和切点进行绑定和关联的过程成为织入
(Join Point)连接点 : 我的理解是,通知和切点关联之后(织入之后),才会产生连接点。是他们两个的孩子,连接点不能单独产生使用。
比如:
@Aspect //切面
@Component
public class ApiLogAspect {/*** 切点*/@Pointcut("@annotation(com.wang.annotation.ApiLog)")public void pointcut(){};/*** 增强* @param pjp ProceedingJoinPoint 连接点 此连接点专门用于环绕通知* @return*/@Around("pointcut()") //织入//绑定之后才会产生JoinPoint 或 ProceedingJoinPoint连接点, //然后从连接点中获取切面对象上下文信息,比如// getTarget():获取被代理的对象信息//getgetArgs():获取传入该方法的参数信息// getSignature().getName():获取方法名称// getSignature().getModifiers():获取方法的声明类型public Object aroundAdvice(ProceedingJoinPoint pjp){String name = pjp.getSignature().getName();System.out.println("环绕通知:"+name);return name;}
}