1. 程式人生 > >這一次搞懂Spring Web零xml配置原理以及父子容器關係

這一次搞懂Spring Web零xml配置原理以及父子容器關係

# 前言 在使用Spring和SpringMVC的老版本進行開發時,我們需要配置很多的xml檔案,非常的繁瑣,總是讓使用者自行選擇配置也是非常不好的。基於**約定大於配置**的規定,Spring提供了很多註解幫助我們簡化了大量的xml配置;但是在使用SpringMVC時,我們還會使用到**WEB-INF/web.xml**,但實際上我們是完全可以使用Java類來取代xml配置的,這也是後來SpringBoott的實現原理。本篇就來看看Spring是如何實現完全的零XML配置。 # 正文 先來看一下原始的web.xml配置: ```java ``` 這裡各個配置的作用簡單說下,**context-param**是載入我們主的sping.xml配置,比如一些bean的配置和開啟註解掃描等;**listener**是配置監聽器,Tomcat啟動會觸發監聽器呼叫;**servlet**則是配置我們自定義的Servlet實現,比如DispatcherServlet。還有其它很多配置就不一一說明了,在這裡主要看到記住**context-param**和**servlet**配置,這是SpringIOC父子容器的體現。在之前的I文章中講過IOC容器是以父子關係組織的,但估計大部分人都不能理解,除了看到複雜的繼承體系,並沒有看到父容器作用的體現,稍後來分析。 瞭解了配置,我們就需要思考如何替換掉這些繁瑣的配置。實際上Tomcat提供了一個規範,有一個**ServletContainerInitializer**介面: ```java public interface ServletContainerInitializer { void onStartup(Set