【Spring框架】 ? WebApplicationInitializer源碼分析及應用
1、背景
在約定大於配置的大環境下,xml配置文件越來越多的被零配置所取代。還有大部分將原xml中的配置轉為在java類中定義。
而WebApplicationInitializer就可以看做是web.xml的替代者,在啟動Web項目時會加載該實現類,實現類中可定義對 servlet、filter、listener的操作。
2、源碼分析
先來看下WebApplicationInitializer接口定義,可以看到只有一個接口,參數ServletContext解釋說要用來初始化的;
再看類上註解,提示可以參考SpringServletContainerInitializer。
轉看SpringServletContainerInitializer,先看類定義;
首先該類實現了ServletContainerInitialize接口,並且在註釋中明確說明在容器啟動時加載該實現類。
再來看重寫的方法 onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)
webAppInitializerClasses,解釋為所有WebApplicationInitializer接口的實現類,也就是說在容器啟動時,webAppInitializerClasses的實現類類型會作為參數傳入;
下面的代碼就很容易讀懂了,如果不是接口啥的,將實現類實例化放到linkedList,然後循環調用實現類中重寫的方法,以此達到代替xml的作用。
3、應用
分析完源碼,說下實際項目中的應用。
沒啥說的,寫了 servlet、filter 、listener的操作。
【Spring框架】 ? WebApplicationInitializer源碼分析及應用