Java AOP实践指南:切面编程详解
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggingAspect {
// 定义一个切点,匹配所有controller包下的方法执行
@Pointcut("execution(* com.example.controller..*.*(..))")
public void controllerLoggingPointcut() {
}
// 在切点之前执行的通知,用于日志记录
@Before("controllerLoggingPointcut()")
public void logBeforeControllerMethod(JoinPoint joinPoint) {
String methodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
System.out.println("Before: " + methodName + " with arguments: " + Arrays.toString(args));
}
}
这段代码定义了一个日志切面,它会在com.example.controller
包及其子包下的所有类的所有方法执行前打印日志。这是一个简单的AOP实践,展示了如何使用AspectJ注解来实现切面。
评论已关闭