最近刚接触 springboot 切面编程的相关内容,有个问题网上没太找到相关的解答,想问一下家人们~ 我现在定义了一个 @AfterReturning 的方法,在这个方法我执行了一个线程休眠 10 秒的操作。 但是我调用加入这个切点的方法时,为什么是需要调用 10 秒才能返回呀,这个 @AfterReturning 不是在方法执行完成返回结果之后执行的么? 相关代码如下:
@Pointcut("@annotation(com.ice.hilf.contentmoderation.annotation.PicModeration)") public void picPointcut() {} @AfterReturning(pointcut = "picPointcut()", returning = "result") public void doAfterReturning(JoinPoint joinPoint, Object result) throws InterruptedException { System.out.println("Start aop"); // 休眠,等待图片压缩完成 Thread.sleep(10 * 1000); System.out.println("End sleep"); } Controller 层方法上加上切面注解
@PicModeration @PostMapping("/upload") @ResponseBody public ApiResponse<UniFileRtnVO> upload( @RequestParam("file")MultipartFile file, @RequestParam(value = "uploadType", required = false)Byte uploadType, @RequestParam("fileType") Byte fileType){ ... return ApiResponse.success(rtnVO); } 实际测试时结果就是每次调用这个接口要等 10s 才有返回值,是不是我对 @AfterReturning 的执行原理理解的有问题啊
