@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { longTaskTimed(handler).forEach(t -> { if(t.value().isEmpty()) { logger.warn("Unable to perform metrics timing on " + ((HandlerMethod) handler).getShortLogMessage() + ": @Timed annotation must have a value used to name the metric"); return; } longTaskTimerIds.put(t, registry.longTaskTimer(t.value(), tagConfigurer.httpLongRequestTags(request, handler)).start()); }); RequestContextHolder.getRequestAttributes().setAttribute(TIMING_REQUEST_ATTRIBUTE, System.nanoTime(), SCOPE_REQUEST); return super.preHandle(request, response, handler); }