如何new proceedingJoinPoint
时间: 2023-11-09 12:27:21 浏览: 86
在AspectJ框架中,无法手动创建ProceedingJoinPoint对象,这个对象是由框架在运行过程中自动创建的。在切面中,可以通过方法参数的方式来声明ProceedingJoinPoint类型的参数,框架会自动将当前运行的连接点信息传递给这个参数。
例如,下面的代码定义了一个切面,用来记录目标方法的执行时间:
```
@Aspect
public class TimeAspect {
@Around("execution(public * com.example.service.*.*(..))")
public Object logTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = proceedingJoinPoint.proceed();
long endTime = System.currentTimeMillis();
System.out.println("Method " + proceedingJoinPoint.getSignature().getName() + " executed in " + (endTime - startTime) + " ms");
return result;
}
}
```
在这个切面中,使用@Around注解来定义环绕通知,指定匹配com.example.service包及其子包中的所有公共方法。在logTime方法中,通过调用proceedingJoinPoint.proceed()方法来执行目标方法,并获取执行结果。然后,通过proceedingJoinPoint.getSignature().getName()方法来获取目标方法的方法名,从而记录目标方法的执行时间。
需要注意的是,切面中的方法参数类型必须是ProceedingJoinPoint或JoinPoint类型,否则无法获取连接点信息。
阅读全文