springboot引入切入点表达式
1、pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
2、切入点处理类
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class WebPoint {
@Pointcut("execution(public * com.subject.controller..*.*(..))")
public void webLog(){}
// @Before在之前执行,@After在之后执行
@Before("webLog()") // webLog() 为上面那个方法
public void before(JoinPoint joinPoint) {
// 获取注解
final MethodSignature signature = (MethodSignature) joinPoint.getSignature();
final Annotation[] annotations = signature.getMethod().getAnnotations();
System.out.println("进入了切入点,可以在里面做逻辑处理");
}
//@Around注解 环绕执行,就是在调用之前和调用之后,都会执行一定的逻辑,放行要调此 Object result = jointPoint.proceed();
@Around("execution(* com.wqy.sport.friends.controller.FriendsControllerEG.friendsAllMet(..))")
public Object aroundMethod(ProceedingJoinPoint jointPoint) throws Throwable {
System.err.println(" 目标方法前执行 " );
Object result = jointPoint.proceed(); //调用执行目标方法(result为目标方法执行结果),必须有此行代码才会执行目标调用的方法
System.err.println(" 目标方法后执行 " );
// 获取request和response
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
// 如果不想返回执行结果执行以下方法
response.getWriter().print(JSON.toJSONString(new ResultVo(401, "禁止访问!")));
return null;
// return result;
}
}
3、自定义注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Good {
String value() default "";
String argNames() default "";
String abc();
}
切入点只拦截注解
@Before("@annotation(good)") // webLog() 为上面那个方法
public void before(JoinPoint joinPoint,Good good) {
System.out.println(good);
System.out.println("进入了切入点,可以在里面做逻辑处理");
}

浙公网安备 33010602011771号