Spring框架的核心思想我們可以用兩個字來描述,那就是"解耦"。應用程序的各個部分之間(包括代碼內部和代碼與平臺之間)盡量形成一種松耦合的結構,使得應用程序有更多的靈活性。應用內部的解耦主要通過一種稱為控制反轉(IOC)的技術來實現??刂品崔D的基本思想就是本來由應用程序本身來主動控制的調用等邏輯轉變成由外部配置文件來被動控制。通常我們用一個所謂的好萊塢原則(Don't call me. I will call you.)來比喻這種控制反轉的關系。由于控制反轉的概念相對比較廣泛,很多應用服務器實際上也實現了不同程度的控制反轉技術,只是這些應用服務器對應用程序的侵入性太強。因此Martin Fowler專門寫了一篇文章討論控制反轉這個概念,并提出一個描述更為準確的概念,叫依靠注入(Dependency Injection)。
Spring MVC的主要分發器實現是org.springframework.web.servlet.DispatcherServlet,這是Spring MVC的訪問入口。Spring提供SimpleFormController,AbstractCommandController等類來幫助應用構建各種控制器動作,并用ModelAndView類來聯系展示和邏輯返回數據。如上節所述,Spring MVC能夠支持不同的界面展示技術,而且界面的展示和其后面控制器的實現是分離的,也即界面展示技術的變化不用修改控制器的實現,只需要利用Spring的控制反轉技術修改外部配置文件即可。比如,在使用JSP展示技術時,外部配置文件的viewResolver定義如下: