【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的操做。

   

相關文章
相關標籤/搜索