自定义注解后如何调用

这是我们自定义的注解

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.METHOD)
public @interface MethodAuthority {
    String value();
}

写一个注解解析器,采用aop的方式与注解中的方法进行绑定

package com.fks.annotate.processor;

import com.fks.annotate.annotation.MethodAuthority;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;


@Aspect // 注解声明一个切面
@Component // 受spring管理的容器
public class MethodAuthorityProcessor{
    

    // 注解声明切点,注解的全限定名
    @Pointcut("@annotation(com.xxx.annotate.annotation.MethodAuthority)")
    public void annotationPointcut() {
    };

    //控制注解里调用方法的生命周期---判断权限
    @Before("annotationPointcut()")
    public void after(JoinPoint joinPoint) {
        //获取切入点
        MethodSignature methodSignature = (MethodSignature)joinPoint.getSignature();
        //获取该注解被哪个方法所调用
        Method method = methodSignature.getMethod();
        String MethodName = method.getName();
        //获取注解中传的值
        MethodAuthority annotation = method.getAnnotation(MethodAuthority.class);
        String annotateValue = annotation.value();

       
    }

}

你可能感兴趣的:(java,java,开发语言)