¿Cómo instrumentar / aconsejar un repositorio Spring Data (JPA)?

Estoy fallando en mi esfuerzo por aconsejar un repositorio jpa de datos de primavera. El objetivo es instrumentar (alrededor) a todos los que novoid métodos públicos en un repositorio particular anotados con una anotación personalizada (ResourceNotFound en este ejemplo) y arrojan una excepción cuando el valor de retorno esnull o una colección vacía.

@Repository 
@ResourceNotFound
@Transactional(readOnly = true)
public interface CityRepository extends JpaRepository<City, Long>, JpaSpecificationExecutor<City> { … }

El siguiente consejo es conectar todos los métodos públicos de las implementaciones de la interfaz anotada con@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;
}

lospublicMethodInsideAClassMarkedWithResourceNotFound(…) El método funciona cuando el punto de corte se especifica como:

@Pointcut("execution(public * package.CityRepository+.*(..))")

sin embargo, el@ResourceNotFound la anotación no se está recogiendo. Esto podría deberse al hecho de que la clase subyacente de la interfaz del repositorio es un (proxy)SimpleJpaRepository que no tiene esa anotación particular.

¿Hay alguna manera de propagar @ResourceNotFound a la implementación?

- actualización -

Se modificó la pregunta para reflejar el hecho de que el consejo (alrededor) solo debería aplicarse a los repositorios con una anotación personalizada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta