文章目录
1、前言
在《SpringMVC学习(五)——零配置实现SpringMVC》这篇文章中我们没有使用Spring的配置实现了一个正常的SpringMVC的功能,里面核心的一个点就是使用了WebApplicationInitializer,那这篇文章就详细说明一下这个接口的作用。
2、WebApplicationInitializer的定义
从起初的Spring配置文件,到后来的Spring支持注解到后来的SpringBoot,Spring框架在一步步的使用注解的方式来去除Spring的配置的发展过程。WebApplicationInitializer就是取代web.xml配置的一个接口。
public interface WebApplicationInitializer {
void onStartup(ServletContext var1) throws ServletException;
}
通过覆盖接口提供的onStartup方法我们可以往Servlet容器里面添加我们需要的servlet、listener等,并且在Servlet容器启动的过程中就会加载这个接口的实现类,从而起到和web.xml相同的中作用,从而可以替代以前在web.xml中所做的配置。
3、实现原理
我们首先可以从Spring源码中找到SpringServletContainerInitializer实现类。
@HandlesTypes({
WebApplicationInitializer.class})
public class SpringServletContainerInitializer implements ServletContainerInitializer {
public SpringServletContainerInitializer() {
}
public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext) throws ServletException {
LinkedList initializers = new LinkedList();
Iterator var4;
if(webAppInitializerClasses != null) {
var4 = webAppInitializerClasses.iterator();
while(var4.hasNext()) {
Class initializer = (Class)var4.next();
if(!initializer.isInterface() && !Modifier.isAbstract

本文深入探讨了WebApplicationInitializer接口的定义与实现原理,通过SPI机制实现Web应用的零配置启动,介绍了如何自定义初始化器并整合到Servlet容器。
最低0.47元/天 解锁文章
720

被折叠的 条评论
为什么被折叠?



