FrameworkServlet重写HttpServlet中的service()和doXxx(),这些方法中调用了processRequest(request, response)。
    所在类:org.springframework.web.servlet.FrameworkServlet

    1. protected final void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    2. long startTime = System.currentTimeMillis();
    3. Throwable failureCause = null;
    4. LocaleContext previousLocaleContext = LocaleContextHolder.getLocaleContext();
    5. LocaleContext localeContext = this.buildLocaleContext(request);
    6. RequestAttributes previousAttributes = RequestContextHolder.getRequestAttributes();
    7. ServletRequestAttributes requestAttributes = this.buildRequestAttributes(request, response, previousAttributes);
    8. WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
    9. asyncManager.registerCallableInterceptor(FrameworkServlet.class.getName(), new FrameworkServlet.RequestBindingInterceptor());
    10. this.initContextHolders(request, localeContext, requestAttributes);
    11. try {
    12. this.doService(request, response);
    13. } catch (IOException | ServletException var16) {
    14. failureCause = var16;
    15. throw var16;
    16. } catch (Throwable var17) {
    17. failureCause = var17;
    18. throw new NestedServletException("Request processing failed", var17);
    19. } finally {
    20. this.resetContextHolders(request, previousLocaleContext, previousAttributes);
    21. if (requestAttributes != null) {
    22. requestAttributes.requestCompleted();
    23. }
    24. this.logResult(request, response, (Throwable)failureCause, asyncManager);
    25. this.publishRequestHandledEvent(request, response, startTime, (Throwable)failureCause);
    26. }
    27. }