Spring AOP和获取方法结果

问题描述 投票:0回答:1

我正在用AOP写一个自定义的度量服务。以下是我的custon注释

@Retention(RUNTIME)
@Target(METHOD)
public @interface Metric {
}

和 aspect-class。

@RequiredArgsConstructor
@Aspect
@Component
@Data
public class MetricAspect {

    Map<Signature, Map<Object, Counter>> metrics = new HashMap<>();

    @AfterReturning("@annotation(Metric)")
    public void afterReturning(JoinPoint joinPoint) {
        Signature signature = joinPoint.getSignature();
        metrics.get(signature).get("Success").increment();
    }
}

我已经在我的方法上添加了我的自定义注解。

@Override
@Metric
public GetCMOwnerInvoiceResponseDTO getCMOwnerInvoice(GetCMOwnerInvoiceRequestDTO getCMOwnerInvoiceRequest) throws ValidationWebFault_Exception {
    GetCMOwnerInvoiceRequest request = wsConversionService.convert(getCMOwnerInvoiceRequest, GetCMOwnerInvoiceRequest.class);
    GetCMOwnerInvoiceResponse response = invoiceService.getCMOwnerInvoice(request);
    return wsConversionService.convert(response, GetCMOwnerInvoiceResponseDTO.class);
}

我需要添加该方法的结果,这是一个... GetCMOwnerInvoiceResponseDTO 反对我 metrics 地图,而不是 "成功 "一词。我需要使用哪些参数或注释?

java aop spring-aop
1个回答
0
投票

你可以使用 returning 属性

@AfterReturning("@annotation(Metric)" , returning="returnValue")
public void afterReturning(JoinPoint joinPoint, Object returnValue) {
© www.soinside.com 2019 - 2024. All rights reserved.