【springMVC源码分析】DispatchServlet初始化原理过程

查看DispatchServlet的继承关系如下:

上面也说了,所有的servlet都是Servlet接口的实现类,所以都有init方法

当我们的servlet注册进servlet容器后,并不会马上执行init方法初始化

tomcat源码:

而是tomcat会在首次调用此servlet处理请求时,才会调用init方法

依次向下调用,initServletBean

依次向下调用,initWebApplicationContext  初始化Web应用上下文,中有onRefresh方法

执行DispatchServlet类的onRefresh方法

最终进行了各种组件的初始化,如文件上传解析器、处理器映射器、处理器解析器、视图解析器等。

这些组件都是从ApplicaitonContext中拿的,也就是从IOC容器中取的。

 

那这些组件何时被放入IOC容器的?

是在springboot的WebMvcAutoConfiguration类中有配置类并且有@bean注解,所以在启动时,spring就会创建bean到ioc容器中了。

 

如果要扩展则只需要实现对应的接口,注册到容器中即可。如实现MultipartResolver接口,可以自定义文件上传解析器。

直接注册到容器就可以生效是因为springboot实现了它的自动配置。由@ConditionalOnMissingBean注解可以得知,当已经存在了MultipartResolver接口的实现类的时候,就不会初始化它的了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值