从方面的@Around方法返回Mono

时间:2019-03-08 11:13:53

标签: spring spring-boot spring-aop spring-webflux

我正在使用Spring AOP作为分析方法的执行时间。我的方法使用Spring WebFlux并返回各种类型的Mono,即。 MapList是Java类的自定义对象。但是jointPoint.proceed()通知中的@Around返回对象。如何从doAround方法返回相同的Mono。 我想知道其执行时间的方法如下:

public Mono<Map<Integer, Car>> getCarObject(List<Integer> cardIds) {

    if (cardIds == null || cardIds.isEmpty()) {
        return Mono.fromCallable(() -> new HashMap<>());
    } 

    return Mono.fromCallable(() -> listingClient.getCarObject(carIds).getData());
}

我的方面类如下:

@Aspect
@Configuration
public class Demo  {

private Logger logger = LoggerFactory.getLogger(this.getClass());

@Pointcut("execution(* com.Car.*.mediators.*.*(..))")
public void feignClientPointcut() {

}
@Around("feignClientPointcut()")
public void doAround(ProceedingJoinPoint joinPoint) throws Throwable {

        long start = System.currentTimeMillis();

        Object object = joinPoint.proceed();  
        long end = System.currentTimeMillis();

        long time = end - start;
        logger.error("Around Method Name = {}",joinPoint.getSignature().getName());
        logger.error("Around time :{}",time);


}
}

如何从doAround方法返回相同的Mono。因为在返回Mono<object>时,方法的调用函数会引发错误,因为它期望Map不是对象?

0 个答案:

没有答案