processDispatchResult -> this.render(mv, request, response); -> view.render()
RequestMappingHandlerAdapter 实现了BeanFactory. 就是系统启动的AppliconContext extends BeanFacotry. 它加载所有配置扫描config, 注解等. implents InitializingBean. afterPropertiesSet() 在创建bean后, 初始化的属性. 在afterPropertiesSet里它将配置放到resolves里, 等到调用doServlet是调用.


请求 --> DispatcherServlet --> 处理器映射器(HandlerMapping)--> 处理器适配器(HandlerAdapter)--> 处理器(Controller)--> 处理器方法执行 --> 处理器方法返回值处理(HandlerMethodReturnValueHandler)--> 视图解析器(ViewResolver)--> 视图(View)--> 响应
servlet init -> HttpServletBean.initServletBean -> FrameworkServlet .initWebApplicationContext -> DispacherServlet.onFresh

`init` 方法是在 Servlet 生命周期中的一次性初始化方法,它在 Servlet 容器加载 Servlet 时被调用,通常只执行一次。
当 Servlet 容器启动时,会为每个 Servlet 类实例化一个对象,并调用其 `init` 方法进行初始化。这个过程只会发生一次,即使有多个请求同时到达该 Servlet。
一旦 Servlet 实例完成初始化,它会一直保持在内存中,供后续请求使用。每个请求都会创建一个新的线程来处理,并调用 Servlet 的 `service` 方法来处理请求。在处理完请求后,线程不会销毁 Servlet 实例,而是继续等待下一个请求到达。
因此,`init` 方法只会执行一次,用于初始化 Servlet。而每个请求都会调用 `service` 方法来处理具体的请求逻辑。
AbstractHandlerMethodMapping在加载它之后, 会将所有getmapping等的类注册到

applicationcontextaware vs @autowired 暂时没看出区别, 可能只有看底层的装配才有可能分析. 反正aware就是注入个所需类一般是
网友评论