1. Advice 增强
- Advice 增强,定义拦截之后方法要做什么
- 接口
org.aopalliance.aop.Advice
- 5 种增强
- MethodBeforAdvice 前置增强
- AfterReturningAdvice 后置增强
- MethodInterceptor 环绕增强
- ThrowsAdvice 异常抛出增强
- IntroductionInterceptor 引介增强,通过扩展DelegatingIntroductionInterceptor来实现引介增强
![](https://img.haomeiwen.com/i20154612/571e935262787722.png)
image.png
2. MethodInterceptor
2.1 普通用法
public class BusinessInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.println("before...");
// 通过反射调用目标方法
Object obj = invocation.proceed();
System.out.println("after...");
return obj;
}
}
2.2 Advisor
public class MyInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
// do something
return invocation.proceed();
}
}
@Configuration
public class BusinessInterceptorConfig {
public static final String execution = "execution(* com.example.concrete.interceptor.*.*(..))";
@Bean
public Advisor defaultPointcutAdvisor() {
MyInterceptor interceptor = new MyInterceptor();
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor();
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression(execution);
advisor.setPointcut(pointcut);
advisor.setAdvice(interceptor);
return advisor;
}
}
网友评论