首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >spring Dispatcher Servlet如何在没有任何XML配置的情况下创建默认bean?

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

Stack Overflow用户
提问于 2012-07-29 18:08:35
回答 2查看 1.3K关注 0票数 1

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

如果我们不给出任何默认值:

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

当没有显式声明这些bean时,Spring是如何创建这些bean的呢?一旦创建,这些默认bean在应用程序上下文中是否可用?我的意思是,我们可以通过调用上下文对象上的getBean()方法来获得这些mean吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-29 18:45:51

查看DispatcherServlet.initStrategies()

代码语言:javascript
代码运行次数:0
运行
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2018-05-11 05:31:36

当所提到的"init“方法被调用时,默认对象被添加到上下文中。例如,在private void initHandlerMappings(ApplicationContext context)中,通过调用getDefaultStrategies(context, HandlerMapping.class)获得默认的处理程序映射。在这里,会发生以下情况:

使用DispatcherServlet.properties

  • Create a Class

  • of each.

  • 使用默认类名填充每个String[],但为了实际实例化默认对象,它调用以下方法,传入类实例:

protected Object context(ApplicationContext context,Class clazz) {返回context.getAutowireCapableBeanFactory().createBean(clazz);

}

正是在这里,默认对象被完全初始化为bean。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11708383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档