Spring中对于WebApplicationInitializer的理解

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

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容器里面添加我们需要的servletlistener等,并且在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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leo825...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值