我正在尝试为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访问方法签名,然后您可以从签名中提取注释。