【发布时间】:2023-03-15 22:15:01
【问题描述】:
我正在尝试创建一个@after aop 注释以在方法完成后执行代码。我在传递参数时遇到问题。
方面代码 -
@Aspect
@Component
public class FinalAspect {
@Pointcut("@annotation(finalEvent)")
public void runFinalMethod() {}
@After("runFinalMethod()")
public void finalMethod(JoinPoint joinPoint, FinalEvent finalEvent) throws Throwable {
....
}
}
决赛 -
@Target({ElementType.Method})
@Retention(RetentionPolicy.RUNTIME)
public @interface FinalEvent {
String value() default "";
}
控制器 -
@FinalEvent(value = "test")
public ResponseEntity<String> getDetails() { ... }
这会引发错误:
引用的错误类型不是注解类型:finalEvent
但是,如果我从 FinalEvent 接口中删除“值”属性并更改为 @annotation(FinalEvent),它就可以工作。但我需要传递参数。
如果我修改为 @Pointcut("@annotation(com.aspect.finalEvent)") 那么它会在 ::0 正式未绑定切入点处引发错误。
我该如何解决这个问题?
【问题讨论】:
标签: java spring-boot aop spring-aop