配置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相关的东西。