Spring Dispatcher Servlet如何在没有任何XML配置的情况下创建默认bean?

时间:2012-07-29 10:08:35

标签: spring servlets javabeans default dispatcher

Spring Dispatcher Servlet如何在没有任何预定义XML配置文件的情况下创建默认bean。 (我不是在谈论注释)。

如果我们不提供任何默认值:

1)处理程序映射对象 2)多部分解析器 3)主题解析器等...... 在XML配置文件中,Spring会自动创建这些bean。

当没有在任何地方明确声明这些bean时,Spring如何创建这些bean? 一旦创建了应用程序上下文中可用的这些默认bean?我的意思是我们可以在上下文对象上调用getBean()方法来获取这些bean吗?

1 个答案:

答案 0 :(得分:1)

结帐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)Multipart Resolver

查看AnnotationDrivenBeanDefinitionParser.parse() - 非常复杂,请注意。

  

3)主题解析器

如果没有配置其他解析器,则使用

FixedThemeResolver

Spring MVC上下文启动的内部结构太复杂了 - 你不应该乱用它们。只需提供您想要替换的回调或bean。