ServletWebServletAutoConfiguration類定義如下:
可以看到其中通過@Import注解導入了其內部類BeanPostProcessorRegister。
BeanPostProcessor中定義的registerBeanDefinition方法會被Spring容器調用。
registerBeanDefinitions方法調用了RegistrySyntheticBeanIfMissing方法,這個方法代碼如下:
可以看到它把傳入的參數創建成BeanDefinition對象,然后注冊到了Spring容器,而這個方法第三個參數為WebServerFactoryCustomizerBeanPostProcessor,所以就向Spring容器注冊了WebServerFactoryCustomizerBeanPostProcessor類型的bean,
WebServerFactoryCustomizerBeanPostProcessor代碼如下:
因為它是BeanPostProcessor,所以它的postProcessBeforeInitialization方法會被Spring容器調用,從圖中可以看到,postProcessBeforeInitialization方法調用了容器中所有實現了WebServerFactoryCustomizer接口的bean的customize方法。