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..*(..))")
我想在每次 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"
考虑到 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..*(..))")