Sprongboot向IOC容器中注入了DispatcherServlet组件 和 给Tomcat注册了DispatcherServlet,
请求过来时,是Tomcat层的DServlet处理请求,所以IOC中的DServlet是做什么用的
spring把servlet的执行器分派给了tomcat中的控制器。这两者不矛盾的
public class DispatcherServlet extends FrameworkServlet {
@Override
protected void onRefresh(ApplicationContext context) {
initStrategies(context);
}
/**
* 初始化这个servlet使用的策略对象
* <p>May be overridden in subclasses in order to initialize further strategy objects.
*/
protected void initStrategies(ApplicationContext context) {
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
initFlashMapManager(context);
}
}
此处用到了策略模式
DispatcherServlet只是实现了Servlet规范而已,是处理请求的入口,至于DispatcherServlet是否放到IOC中无所谓的,放进去只是为了方便依赖注入(即IOC/DI规范)以及生命周期的管理