У меня есть публичный метод, помеченный @Async
.Этот метод не в контроллере.Я хочу перехватить поток после завершения выполнения потока, чтобы я мог очистить определенные ThreadLocals.
Я уже изучил AsyncHandlerInterceptor
, но это происходит, когда контроллер получает запрос, а не до и после @Async
выполнение.
public class SampleAsyncHandlerInterceptor implements AsyncHandlerInterceptor {
@Override
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("afterConcurrentHandlingStarted " + request.getRequestURI());
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle " + request.getRequestURI());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle " + request.getRequestURI());
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion " + request.getRequestURI());
}
}
Мне нужен перехватчик типа CallableProcessingInterceptor, но для операции @Async
.