2、spring如何实现Servlet3.0的ServletContainerInitializer

配置SPI实现类

Servlet3.0实现了SPI机制,提供一个ServletContainerInitializer接口,如:

Spring实现了该接口

并且在spring-web项目下增加了配置文件配置该实现类

配置文件位置在META-INF/services/javax.servlet.ServletContainerInitializer

文件中指明了实现类位置

SpringServletContainerInitializer

SpringServletContainerInitializer实现类@HandlesTypes指明了一个接口WebApplicationInitializer,SPI机制将会自动扫描类路径下该接口的实现类并通过webApplicationInitializerClasses集合传入onStartup方法。

下面我们看看onStartup方法

代码很简单主要分为两步

1、过滤出WebApplicationInitializer的实现类

2、遍历调用该实现类的onStartup方法

总结 

spring基于servlet3.0的SPI,实现了ServletContainerInitializer接口,并且自定义了一个WebApplicationInitializer接口。

开发人员面向WebApplicationInitializer接口,只需要实现它并做相应的处理,隐藏与Servlet相关的东西。

猜你喜欢

转载自www.cnblogs.com/lay2017/p/11258809.html