SpringMVC九大组件与组件初始化原理

一,九大组件

坐标 dispatchServlet

/** MultipartResolver used by this servlet. */
	//多部件解析器
	@Nullable
	private MultipartResolver multipartResolver;

	/** LocaleResolver used by this servlet. */
	//区域化 国际化解析器
	@Nullable
	private LocaleResolver localeResolver;

	/** ThemeResolver used by this servlet. */
	//主题解析器
	@Nullable
	private ThemeResolver themeResolver;

	/** List of HandlerMappings used by this servlet. */
	//处理器映射组件
	@Nullable
	private List<HandlerMapping> handlerMappings;

	/** List of HandlerAdapters used by this servlet. */
	//处理器适配器组件
	@Nullable
	private List<HandlerAdapter> handlerAdapters;

	/** List of HandlerExceptionResolvers used by this servlet. */
	//异常解析器
	@Nullable
	private List<HandlerExceptionResolver> handlerExceptionResolvers;

	/** RequestToViewNameTranslator used by this servlet. */
	// 默认视图名转换器组件
	@Nullable
	private RequestToViewNameTranslator viewNameTranslator;

	/** FlashMapManager used by this servlet. */
	// Flash属性管理组件
	@Nullable
	private FlashMapManager flashMapManager;

	/** List of ViewResolvers used by this servlet. */
	//视图解析器
	@Nullable
	private List<ViewResolver> viewResolvers;

二,九大组件初始化位置

坐标: DispatchServlet OnRefresh方法。

 三,初始化调用方法onRefresh堆栈

AbstractApplicationContext --> refresh方法中 finishRefresh方法

SimpleApplicationEventMulticaster -》 doInvokeListener方法,以一种事件监听的方式去加载九大组件初始化策略

 按照SourceFilteringListener -》 GenericApplicationListenerAdapter-》FrameworkServlet顺序调用onApplicationEvent方法最终调用九大组件初始化方法。

 四,initHandlerMappings初始化

If的判断: 可以通过配置该属性选择HandlerMapping初始化的方式。

SpringMVC的接口化插件: 九大组件的存入方式可以发现都是接口,接口提供了规范性,比如要自己去做一个Handler插件,那么就要去实现HandlerMapping接口

如果获取到的HandlerMapping为NULL,那么还会提供一个默认实例化策略去完成

 进入到默认策略生成HandlerMapping的方法, key值为HandlerMapping.class,这里重点放在defautlStrategies容器是如何初始化的。反向追踪,发现通过默认地址加载配置获取的class存入Properties中。默认地址DispatcherServlet.properties

 全局搜索这个文件,可以看到该文件为九大组件默认加载配置类的文件,到这里位置,后面不在对其它的组件初始化做具体的分析,基本上原理一直,默认加载的方法这里用到了策略模式,提供了统一的策略生成手段。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值