【Spring框架】 ☞ WebApplicationInitializer源码分析及应用

一、背景

  在约定大于配置的大环境下,xml配置文件愈来愈多的被零配置所取代。还有大部分将原xml中的配置转为在java类中定义。java

  而WebApplicationInitializer就能够看作是web.xml的替代者,在启动Web项目时会加载该实现类,实现类中可定义对 servlet、filter、listener的操做。web

二、源码分析

  先来看下WebApplicationInitializer接口定义,能够看到只有一个接口,参数ServletContext解释说要用来初始化的;源码分析

  再看类上注解,提示能够参考SpringServletContainerInitializer。spa

  

  转看SpringServletContainerInitializer,先看类定义;3d

  首先该类实现了ServletContainerInitialize接口,而且在注释中明确说明在容器启动时加载该实现类。xml

       

  

  再来看重写的方法 onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)blog

  webAppInitializerClasses,解释为全部WebApplicationInitializer接口的实现类,也就是说在容器启动时,webAppInitializerClasses的实现类类型会做为参数传入;接口

  下面的代码就很容易读懂了,若是不是接口啥的,将实现类实例化放到linkedList,而后循环调用实现类中重写的方法,以此达到代替xml的做用。源码

  

 

三、应用

  分析完源码,说下实际项目中的应用。servlet

  没啥说的,写了 servlet、filter 、listener的操做。

   

相关文章
相关标签/搜索