注释方法上的切入点



我正在尝试为JPA存储库方法添加自定义注释,以对@Query值提供建议。

下面是我尝试过的代码

MyFilter类

@Aspect
@Component
public class MyFilter {
@Pointcut("execution(* *(..)) && @within(org.springframework.data.jpa.repository.Query)")
private void createQuery(){}
@Around("createQuery()")
public void invoke(JointPoint jp) {
}
}

责任库代码

@MyFilter
@Query(Select * ...)
MyObject findByNameAndClass(...)

所以我一直得到错误

createQuery() is never called At MyFilter

我正在尝试使用建议更新查询值。

我做错了什么?

为了捕获注释,我经常使用以下模式:

"execution(@AnnotationToCapture * *(..)) && @annotation(annotationParam)"

然后在前面的方法中,您可以将注释作为参数:

(..., AnnotationToCapture annotationParam, ...)

您不应该将@within注释用于此目的。相反,您应该使用@annotation,如下所示:

@Pointcut("execution(* *(..)) && @annotation(org.springframework.data.jpa.repository.Query)")
private void createQuery(){}

同样,您应该使用JoinPoint访问方法签名,然后您可以从签名中提取注释。

相关内容

  • 没有找到相关文章

最新更新