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();}