原创

@Scheduled调Feignclient调不了

原因:

用 postman 请求接口的时候,是有一个 webContext 的(就是 HTTP 请求信息),具体参数在HttpServletRequest 等类里面,feign 接口进行调用的时候,会复制 webContext 里面的参数,发起请求; 定时任务并不是 HTTP 请求发起的,所以 feign 取不到 webContext

解决:

非web调用feign,RequestContextHolder.getRequestAttributes()是null的,所以需要在空的情况赋值一次
file

代码如下:
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if (servletRequestAttributes == null) {
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(new MockHttpServletRequest()));
}

正文到此结束
本文目录