zoukankan      html  css  js  c++  java
  • AOP通过反射获取自定义注解

     自定义注解:

    @Target({ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface DemoAnno {
        String value()  default "";
    }

    AOP: 

    @Pointcut("@annotation(com.hephae.aop.aop.DemoAnno)")
        public void demoAspect() {
        }
    
        @Around(value = "demoAspect()")
        public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
            Signature signature = joinPoint.getSignature();
            MethodSignature methodSignature = (MethodSignature)signature;
            //method为接口的Method对象,获取不到实现类方法上的注解
            Method method = methodSignature.getMethod();
            //targetMethod为实现类方法对象
            Method targetMethod = joinPoint.getTarget().getClass().getMethod(method.getName(), method.getParameterTypes());
            //获取注解
            DemoAnno demoAnno = targetMethod.getAnnotation(DemoAnno.class);
            if (demoAnno != null) {
                String value = demoAnno.value();
            }
            Object obj = null;
            obj = joinPoint.proceed();
            return obj;
        }    
  • 相关阅读:
    Vue-嵌套路由
    Vue-详解设置路由导航的两种方法: <router-link :to="..."> 和router.push(...)
    Python
    windows和linux下 Python2,Python3 的环境及安装
    Python那点事
    Linux
    Linux
    Django
    Redis
    Django
  • 原文地址:https://www.cnblogs.com/hephae/p/7284293.html
Copyright © 2011-2022 走看看