我想对我的spring启动应用程序的每个api调用做一些事情。我使用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数据用于自动生成API端点的crud机制,例如:
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
User findByEmail(String email);
}
问题是,我可以为每个API端点创建一个点切割是由弹簧休息数据生成的?
以下切入点将针对所有RESTful端点调用在"/users"
考虑UserRepository
的包装是rg.so.example.datarest
@Pointcut("execution(* rg.so.example.datarest.UserRepository.*(..))")
public void dataRest() {
}
一个针对包rg.so.example.datarest
中所有Repository实现的更通用的切入点是
@Pointcut("execution(* rg.so.example.datarest..*(..))")