记录springboot的web应用启动后,frams栈帧中的调用都是干嘛的。大概得有三四十个。
写个最简单controller,sout hello ,debug,前台发一个请求,然后可以看到
简要整理下黄色区域这些栈帧都是干嘛的(简略的写一下,很多源码印象模糊了,也没重新看,大体上没问题,细微处可能有错误)。
总结起来就是:
1: 请求到达端口,由tomcat的acceptor线程收到,加到事件队列中,相当于转给poller线程处理,poller再转给executor线程池处理,也就是图中http-nio–8080-exec-1线程;
2. 通过tomcat责任链走到filter,走完filterChain,来到servlet
3. springmvc的DispatchServlet继承了Httpservlet(多层继承),执行doGet,接着就是mvc框架中的内容,处理器映射器mapping-》处理器适配器-》参数解析器等等,最终来到我们的请求。
图片正着贴,调用顺序要倒着看。