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;
}

浙公网安备 33010602011771号