@
hantsy 我试了下,配置文件加上 logging.level.web=trace 后前后两次打印
第一次请求--------------------------------------------
2021-01-07 13:13:52.659 INFO 43592 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-01-07 13:13:52.659 INFO 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2021-01-07 13:13:52.659 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Detected org.springframework.web.multipart.support.StandardServletMultipartResolver@49277b55
2021-01-07 13:13:52.659 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Detected org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver@18bda305
2021-01-07 13:13:52.659 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Detected org.springframework.web.servlet.theme.FixedThemeResolver@71e0316e
2021-01-07 13:13:52.660 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Detected DefaultRequestToViewNameTranslator
2021-01-07 13:13:52.660 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Detected SessionFlashMapManager
2021-01-07 13:13:52.660 DEBUG 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : enableLoggingRequestDetails='false': request parameters and headers will be masked to prevent unsafe logging of potentially sensitive data
2021-01-07 13:13:52.660 INFO 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2021-01-07 13:13:52.667 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : GET "/", parameters={}, headers={masked} in DispatcherServlet 'dispatcherServlet'
2021-01-07 13:13:52.669 TRACE 43592 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.example.demo.DemoApplication$PostController#getAll()
2021-01-07 13:13:52.675 TRACE 43592 --- [nio-8080-exec-2] o.s.web.method.HandlerMethod : Arguments: []
2021-01-07 13:13:52.691 DEBUG 43592 --- [nio-8080-exec-2] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/plain', given [*/*] and supported [text/plain, */*, text/plain, */*, application/json, application/*+json, application/json, application/*+json]
2021-01-07 13:13:52.692 TRACE 43592 --- [nio-8080-exec-2] m.m.a.RequestResponseBodyMethodProcessor : Writing ["1111"]
2021-01-07 13:13:52.699 TRACE 43592 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerAdapter : Applying default cacheSeconds=-1
2021-01-07 13:13:52.699 TRACE 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : No view rendering, null ModelAndView returned.
2021-01-07 13:13:52.699 DEBUG 43592 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed 200 OK, headers={masked}
第二次请求---------------------------------------------------
2021-01-07 12:58:11.230 TRACE 43278 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet : GET "/2", parameters={}, headers={masked} in DispatcherServlet 'dispatcherServlet'
2021-01-07 12:58:11.230 TRACE 43278 --- [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.example.demo.DemoApplication$PostController#getById()
2021-01-07 12:58:11.230 TRACE 43278 --- [nio-8080-exec-3] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
2021-01-07 12:58:11.231 DEBUG 43278 --- [nio-8080-exec-3] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/plain', given [*/*] and supported [text/plain, */*, text/plain, */*, application/json, application/*+json, application/json, application/*+json]
2021-01-07 12:58:11.231 TRACE 43278 --- [nio-8080-exec-3] m.m.a.RequestResponseBodyMethodProcessor : Writing ["2222"]
2021-01-07 12:58:11.231 TRACE 43278 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet : No view rendering, null ModelAndView returned.
2021-01-07 12:58:11.231 DEBUG 43278 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet : Completed 200 OK, headers={masked}
--------------------------------------------------------------------
我这个不带数据库的纯 springmvc 简单项目,dispatcher 初始化其实就 1ms 。
第一次请求 spring 内部耗时是 699-667=32ms (快点的时候十多 ms ),不过算上 jvm 预热其实也正常。
整体 100ms 以上的话,得加上 spring.main.lazy-initialization=true 才行。