自定义注解:
@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; }
时间: 2024-11-14 08:06:23