美文网首页
Springboot 怎么省去web.xml的

Springboot 怎么省去web.xml的

作者: Slahser2c | 来源:发表于2018-12-27 22:21 被阅读0次

    复习一下。


    Servlet 3.0 :

    web.xml是非常重要的一个配置,无论是servlet、filter、listener都需要在web.xml里面配置下。

    但是在servlet3.0里,这个配置得到了简化。可以通过java配置(注解等)省去web.xml配置。

    具体servlet3.0的规范这里就不讨论了,说下其中一个非常重要的类。javax.servlet.ServletContainerInitializer

    这个类会在web容器启动阶段被回调,可以在onStartup方法里做一些servlet、filter、listener的注册等操作。

    Springboot 实现:

    Spring在META-INF/services下配置了这个类,让整个web容器启动后可以找到并启动这个类 : SpringServletContainerInitializer

    @HandlesTypes(WebApplicationInitializer.class)
    public class SpringServletContainerInitializer implements ServletContainerInitializer {
    
        @Override
        public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)
                throws ServletException {
            List<WebApplicationInitializer> initializers = new LinkedList<WebApplicationInitializer>();
            //.... 
            initializers.add((WebApplicationInitializer) waiClass.newInstance());
            //.... 
        AnnotationAwareOrderComparator.sort(initializers);
            for (WebApplicationInitializer initializer : initializers) {
                initializer.onStartup(servletContext);
            }
        }
    }
    

    使用Springboot的时候,都会继承一个类SpringBootServletInitializer,在这个类的onStartup方法中,启动了整个Spring容器。

    相关文章

      网友评论

          本文标题:Springboot 怎么省去web.xml的

          本文链接:https://www.haomeiwen.com/subject/egedlqtx.html