@Point 获取切面方法的全路径名称
时间: 2023-12-21 21:07:00 浏览: 127
可以通过在切面方法中使用注解 @Pointcut,并将其参数设置为切点表达式,然后使用反射获取该注解的 value 属性值来获取切点表达式的字符串形式,即切面方法的全路径名称。具体代码实现如下:
```java
@Aspect
@Component
public class MyAspect {
@Pointcut("execution(* com.example.demo.service.*.*(..))")
public void pointcut() {}
@Before("pointcut()")
public void before(JoinPoint joinPoint) {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
Pointcut pointcut = method.getAnnotation(Pointcut.class);
String methodName = method.getName();
String className = method.getDeclaringClass().getName();
String expression = pointcut.value()[0];
String fullMethodName = className + "." + methodName + "() with expression: " + expression;
System.out.println(fullMethodName);
}
}
```
在上面的代码中,我们定义了一个名为 pointcut 的切点方法,并使用注解 @Pointcut 设置其切点表达式为 "execution(* com.example.demo.service.*.*(..))"。然后在切面方法 before 中,我们通过反射获取该切点方法的注解 @Pointcut,并从中获取其 value 属性值,即切点表达式的字符串形式,最后拼接类名、方法名和切点表达式,得到切面方法的全路径名称。
阅读全文