MethodInterceptor是AOP项目中的拦截器,它拦截的目标是方法,即使不是controller中的方法
自定义方法拦截器
package org.aopalliance.intercept;
@FunctionalInterface
public interface MethodInterceptor extends Interceptor {
Object invoke(MethodInvocation var1) throws Throwable;
}
自定义拦截器,实现MethodInterceptor
接口的invoke()
方法
package com.wang.chao.micro.interceptor;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class MyMethodInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
System.out.println("MyMethodInterceptor "+methodInvocation.getMethod().getName());
return methodInvocation.proceed();
}
}
案例一
使用aspectj execution
表达定义切点;使用 AspectJExpressionPointcut
定义切点并注册
package com.wang.chao.micro.interceptor.config;
import com.wang.chao.micro.interceptor.MyMethodInterceptor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class InterceptorConfig {
public static final String traceExecution = "execution(* com.wang.chao.micro..*.*(..))";
@Bean
public DefaultPointcutAdvisor defaultPointcutAdvisor(){
MyMethodInterceptor metho