签出DispatcherServlet.initStrategies()
:
protected void initStrategies(ApplicationContext context) {
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
}
您会注意到,它会DispatcherServlet
尝试查找具有某些固定名称的现有 bean,并且如果未找到,则使用默认值或不使用任何名称。
1) 处理程序映射对象
如果没有配置其他解析器,则不使用解析器。
2) 多部分解析器
退房AnnotationDrivenBeanDefinitionParser.parse()
- 相当复杂,请注意。
3) 主题解析器
FixedThemeResolver
如果没有配置其他解析器,则使用。
Spring MVC 上下文启动的内部结构过于复杂是有原因的——你不应该把它们弄乱。只需提供要替换的回调或 bean。