Following is my aspect:
@Configurable
@Aspect
public class TimingAspect {
@Autowired
private HttpServletRequest httpServletRequest;
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;
}