ServletContextInitializer和WebApplicationInitializer的区别

一、WebApplicationInitializer

实现原理:
org.springframework.web.SpringServletContainerInitializer实现了javax.servlet.ServletContainerInitializer接口,在Servlet容器启动的时候,会自动探测WebApplicationInitializer的实现类,执行其onStartup方法。

二、ServletContextInitializer

springboot提供了ServletContextInitializer接口,用于程序化、动态配置ServletContext中的接口。
注意:这些实现类Bean是Spring管理的,而非Servlet容器管理的。

作用: 可以在运行时,动态地往ServletContext容器中注册Servlet,Filter,动态配置Filter、Servlet属性等。

WebApplicationInitializer不同的地方是:这些ServletContextInitializer实例不会被SpringServletContainerInitializer检测,因此不会随着Servlet容器启动,而是在ServletContextInitializer#onStartup接口调用的地方执行初始化。

三、反思

思考🤔:为什么有了WebApplicationInitializer,还要再搞一个ServletContextInitializer

总结:WebApplicationInitializer是spring提供的API,它的生命周期受第三方Servlet容器控制。(在Servlet容器启动时回调)。

ServletContextInitializer是springboot基于嵌入式容器,提供的API,其生命周期是springboot自身控制的,使得springboot更加内聚。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值