使用 Spring 数据剩余时带有注入值的自定义逻辑

Custom Logic with Injected Values when using Spring Data Rest

我想转换现有的 Web 服务以利用 spring-data-rest。

如何在 spring 数据剩余之上使用注入值(特别是 OAuth2 Principal)实现自定义逻辑以保持现有功能?

例如,假设我想覆盖 /person/1 的 GET 方法,以便在它继续访问 return 人 1 的数据之前联系审计 Web 服务。

现在,在使用 spring-data-rest 之前,我会:

@RequestMapping(value = "/person/{id}", method = RequestMethod.GET)
public void getPerson(@RequestBody ...., Principal principal)
{
      /* Let Big Brother know that principal.getName() is doing this */
      return thePerson;
}

我如何使用 Spring Data Rest 生成的端点做这样的事情?

感谢您的建议。我发现在这种情况下(对我来说)最有效的是 Dave Syer 建议的,并且只使用 AspectJ。

最后,这将允许您向 Spring Data JPA 存储库的方法添加自定义日志记录逻辑或任何其他内容:

@Component
@Aspect
public class MyRepositoryAuditor {

    // pointcut on all methods with any arguments inside MyRepository
    @Pointcut("execution(public * example.jpa.repositories.MyRepository.*(..) )")
    public void publicRepositoryMethod() {
    }

    // if they return normally
    @AfterReturning("publicRepositoryMethod()")
    public void publicRepositoryMethod(JoinPoint jp) throws Throwable {

        String methodName = jp.getSignature().getName();

        .... perform logging ....
    }
}