我正在使用Spring AOP作为分析方法的执行时间。我的方法使用Spring WebFlux并返回各种类型的Mono,即。 Map
,List
是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
不是对象?