Spring Spring 数据剩余控制器(端点)的 AOP 切入点

Spring AOP Pointcut for Spring Data Rest Controller (EndPoint)

我想在每次 api 调用我的 spring 启动应用程序时做一些事情。我使用 Spring AOP 来实现这一点。使用:

@Pointcut("within(@org.springframework.stereotype.Controller *)")
public void controller() {
}

@Pointcut("within(@org.springframework.web.bind.annotation.RestController *)")
public void restController() {
}

@After("(controller() || restController())")
public void loggingAdvice(JoinPoint joinPoint) {
   // TODO: do something
}

使用它我可以获得调用 API 时的所有事件。但是,我也使用 spring rest data 用于自动生成 API 端点的 crud 机制,例如:

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
    User findByEmail(String email);
}

问题是,我可以为 spring 剩余数据生成的每个 API 端点创建一个切点吗?

以下切入点将针对在 "/users"

进行的所有 RESTful 端点调用

考虑到 UserRepository 的包是 rg.so.example.datarest

@Pointcut("execution(* rg.so.example.datarest.UserRepository.*(..))")
public void dataRest() {
}

针对一个包 rg.so.example.datarest 中的所有存储库实现的更通用的切入点是

@Pointcut("execution(* rg.so.example.datarest..*(..))")