我想转换现有的Web服务以利用spring-data-rest。
如何在弹簧数据休息之上实现具有注入值(特别是OAuth2 Principal)的自定义逻辑以保持现有功能?
例如,假设我想覆盖/ person / 1的GET方法,以便在继续审核人员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生成的端点执行此类操作?
答案 0 :(得分:1)
感谢您的建议。我发现在这种情况下对我来说最有效的是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 ....
}
}