java.lang.IllegalStateException: No thread-bound request found, exception in aspect java.lang.IllegalStateException: No thread-bound request found, exception in aspect spring spring

java.lang.IllegalStateException: No thread-bound request found, exception in aspect


You shouldn't autowire a HttpServletRequest in your aspect as this will tie your aspect to be only runnable for classes that are called from within an executing HttpServletRequest.

Instead use the RequestContextHolder to get the request when you need one.

private String getRemoteAddress() {    RequestAttributes attribs = RequestContextHolder.getRequestAttributes();    if (attribs instanceof NativeWebRequest) {        HttpServletRequest request = (HttpServletRequest) ((NativeWebRequest) attribs).getNativeRequest();        return request.getRemoteAddr();    }    return null;}


@M. Deinum answer doesn't work for me. I use these code instead

RequestAttributes attribs = RequestContextHolder.getRequestAttributes();if (RequestContextHolder.getRequestAttributes() != null) {    HttpServletRequest request = ((ServletRequestAttributes) attributes).getRequest();    return request.getRemoteAddr();}


Create bean for RequestContextListener.I got the same error for autowiring HttpServletRequest And the following two lines of code works for me

@Beanpublic RequestContextListener requestContextListener() {    return new RequestContextListener();}