核心组件初始化流程
其实看着源码对照着流程图,很容易就能看懂流程是什么样,这里只是描述一下,具体源码就不贴了,自己去看吧。
首先上面部分:自动装配WebFluxAutoConfiguration,他import了EnableWebFluxConfiguration,这个类的作用就是把springboot配置的spring.webflux导进来,用于后面配置。这个类找父类可以找到WebFluxConfigurationSupport,里面会创建DispatcherHandler,而这个类会根据ApplicationContext来初始化(加载mapping、adapter、handler),而这个类实现了WebHandler接口。
下面部分比较简单:自动装配HttpHandlerAutoConfiguration,里面有build方法,以ApplicationContext为参数,关联到了WebHttpHandlerBuilder,里面将FilteringWebHandler带着context中的webHandler、filters构建出来,并加上exceptionHandler包装成ExceptionHandlingWebHandler,最后返回HttpWebHandlerAdapter。
至于图中WebFilter等如何跟ApplicationContext关联,通过看源码可以知道,WebFilter这些接口的初始化方法参数都是ServerWebExchange,里面就有getApplicationContext方法。