正常切面aop 需要引入 aop的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
自定义注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//METHOD--的就是这个注解可以作用在方法上
//TYPE--的就是这个注解可以作用在方法上
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AeqAuth{
String lanjie() default "";//这个根据你自己的逻辑写
}
切面类
@Aspect
@Component
@Slf4j
public class AuthAspect {
//定义切点 @Pointcut
//在注解的位置切入代码
//@annotation 作用在方法上
//@within 作用在类上
@Pointcut("@annotation(com.example.annotation.ReqAuth)")
public void authPointCut() {
}
@Before(value = "authPointCut() && @annotation(reqAuth)")
public void before(JoinPoint point, ReqAuth reqAuth) {
//XXX
}
}
这个里面要注意的是
@annotation 作用在方法上
@within 作用在类上