首页 > TAG信息列表 > getRequestAttributes
在Springboot上下文中获取HttpServletRequest和HttpServletResponse
HttpServletRequest request =((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse response =((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse(); 一般使用 HttpServleRequestContextHolder.getRequestAttributes()为空的问题
在登录完成后需要记录登录结果,其中一项包含客户端的IP地址,但是一直取不到值,通过排查发现,RequestContextHolder.getRequestAttributes()值为空,因为获取ip是在主线程进行的,所以排除线程共享的问题,然后互联网搜索了一下,需要加一段代码 @Bean public RequestContextListener requestCoJava: 在子线程或者异步情况下使用RequestContextHolder.getRequestAttributes()的注意事项
注意事项: 1、不要在请求方法里另起一个子线程调用该方法; 2、在请求周期中,尽可能不要传递Request实例给多线程使用,因为子线程可能在Request生命周期结束销毁后再使用Request时获取不了参数,否则必须同步线程 让其在生命周期结束前调用; 在Spring Boot中,如果我们要获取当前Reque异步子线程获取request
开发中,根据实际的业务场景,有些业务非主要业务,而且这些业务可能还比较耗时,比如日子或者消息,这时就需要将业务改为异步执行。比如, CompletableFuture.runAsync(()->{ kafkaTemplate.send("operate_log", JSON.toJSONString(operateLog)); }); 但是,这是异步执行的业务中可能也