【Spring进阶系列丨第十篇】基于注解的面向切面编程(AOP)详解
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggingAspect {
// 匹配com.example.service包下所有类的所有方法
@Before("execution(* com.example.service.*.*(..))")
public void logBeforeServiceCalls(JoinPoint joinPoint) {
String methodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
System.out.println("Before: " + methodName + "(" + Arrays.toString(args) + ")");
}
}
这个示例代码定义了一个日志切面LoggingAspect
,它使用@Aspect
注解标注类,表示这是一个切面。使用@Before
注解标注的方法表示在匹配的方法执行前执行该方法。"execution(* com.example.service.*.*(..))"
是一个AspectJ的切点表达式,它匹配com.example.service
包下所有类的所有方法。JoinPoint
对象提供了关于目标方法及其参数的信息。
评论已关闭