Spring Boot AOP 获取注解中的值
Wednesday, May 12, 2021
确定需求 首先来确定一下我们的需求:
我需要做一个功能, 可以通过注解的方式来使某些controller做一些事情(比如权限校验).
环境 java 8 Spring Boot 开始 首先来创建一个注解类MyAnnotation:
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { /** * 注解值(等下要获取并处理该值) * @return */ String value() default ""; } 还有处理注解的类MyAnnotaionAspect:
[epcl_box type=“notice”]注意, 需要将下方的@annotation内的值替换为你的注解路径![/epcl_box]
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.lang.reflect.Method; @Aspect @Component public class MyAnnotationAspect { protected static final Logger logger = LoggerFactory.getLogger(MyAnnotationAspect.class); // TODO 注意这里需要替换为你的注解路径 @Around("@annotation(com.example.demo.MyAnnotation)") public Object doSomething(ProceedingJoinPoint point) throws Throwable { MethodSignature signature = (MethodSignature) point.