记录一个异步任务丢失request的坑,RequestContextHolder.setRequestAttributes(sra, true);异步线程中会丢失

ServletRequestAttributes sra = (ServletRequestAttributes);
RequestContextHolder.setRequestAttributes(sra, true);

由上代码确实可以使request在异步子线程中被继承,在异步线程中获取requset

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

注意,极端情况下主线程结束, request对象会被销毁,此时子线程中的request获取属性会返回null,不建议用这种方式 在异步线程中获取主线程request对象

你可能感兴趣的:(java,java,spring)