如何检测/建议Spring Data (JPA)存储库?
我努力为春季数据jpa存储库提供建议的努力失败了。目标是检测(围绕)使用自定义注释(在本例中为 ResourceNotFound)注释的特定存储库中的所有非公共方法,并在返回值为空集合时引发异常。void
null
@Repository
@ResourceNotFound
@Transactional(readOnly = true)
public interface CityRepository extends JpaRepository<City, Long>, JpaSpecificationExecutor<City> { … }
以下建议是连接用 注释的接口实现的所有公共方法。@ResourceNotFound
@Pointcut("within(com.digitalmisfits.spring.aop.annotation.ResourceNotFound *)")
public void beanAnnotatedWithResourceNotFound() {}
@Pointcut("execution(public * *(..))")
public void publicMethod() {}
@Around("beanAnnotatedWithResourceNotFound() && publicMethod()")
public Object publicMethodInsideAClassMarkedWithResourceNotFound(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("publicMethodInsideAClassMarkedWithResourceNotFound " + pjp.getTarget().toString());;
Object retVal = pjp.proceed();
if(((MethodSignature) pjp.getSignature()).getReturnType() != Void.TYPE && isObjectEmpty(retVal))
throw new RuntimeException("isObjectEmpty == true");
return retVal;
}
当切入点指定为:publicMethodInsideAClassMarkedWithResourceNotFound(…)
@Pointcut("execution(public * package.CityRepository+.*(..))")
但是,未选取注释。这可能是由于存储库接口的基础类是一个(代理的)没有该特定注释的事实。@ResourceNotFound
SimpleJpaRepository
有没有办法将@ResourceNotFound传播到实现?
- 更新 -
更改了问题以反映建议(周围)应仅适用于具有自定义注释的存储库这一事实。