AspectJ:如何将数据从处理程序返回到方法?

时间:2019-02-10 19:06:17

标签: java aspectj

我有一个方法:

@ApiLogRequest(httpMethod = HttpMethod.POST, path = "/planet")
@PostMapping
public ResponseEntity<PlanetDto> save(@RequestBody PlanetDto dto) {
    Long requestId;
    return ResponseEntity.ok(service.save(dto));
}

我有一个注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ApiLogRequest {

    HttpMethod httpMethod();

    String path() default "";
}

我有一个注释处理程序,该处理程序从请求中获取数据并将其保存到数据库中。

@AfterReturning(value = "@annotation(after)", returning = "responseEntity")
public void after(ResponseEntity responseEntity, ApiLogResponse after) throws JsonProcessingException {
    service.save(ApiLog.of(
            TransferType.RESPONSE.name(),
            after.httpMethod().name(),
            after.path(),
            new ObjectMapper().writeValueAsString(responseEntity)
    ));
}

我想发回已保存值的ID,以便在方法中进一步使用它(在save()方法的情况下-Long requestId)。请告诉我如何修复处理程序,以便我可以将处理程序中的内容返回给方法并使用它。

0 个答案:

没有答案