AOP拦截链示例
时间: 2023-07-07 21:07:15 浏览: 102
AOP实例
4星 · 用户满意度95%
AOP(Aspect Oriented Programming)是一种编程范式,它允许开发者在不改变原有代码的情况下,动态地添加功能。其中,拦截器是 AOP 的重要组成部分,用于在程序执行前后、出错或抛出异常时,拦截方法调用并进行相应的处理。
以下是一个基于 Spring AOP 的拦截器示例,它可以在方法调用前后输出方法名及执行时间:
```java
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("调用方法:" + joinPoint.getSignature().getName());
System.out.println("开始时间:" + new Date());
}
@After("execution(* com.example.service.*.*(..))")
public void logAfter(JoinPoint joinPoint) {
System.out.println("调用方法:" + joinPoint.getSignature().getName());
System.out.println("结束时间:" + new Date());
}
}
```
在上述示例中,@Aspect 注解表示该类为切面类;@Before 和 @After 注解分别表示该方法为前置通知和后置通知,它们的参数为切入点表达式,用于指定在哪些方法调用前后执行该方法。在该示例中,切入点表达式为 execution(* com.example.service.*.*(..)),表示匹配 com.example.service 包中所有类的所有方法。
通过以上示例,我们可以看到 AOP 拦截器的实现方式,它可以帮助我们在程序运行时动态地添加功能,提高程序的灵活性和可维护性。
阅读全文