本文將介紹spring web mvc的幾種配置方法。
將http請求反序列化成乙個servletrequest
物件
根據modelandview
的內容,填充servletresponse
物件
將servletresponse
物件序列化成http響應返回給瀏覽器
上述過程涉及的概念,spring web mvc均提供了預設的實現。@enablewebmvc
註解則是告訴spring web mvc使用這些預設實現完成應用的初始化。當然,使用者也可以對當中的一些或者全部做個性化的設定。這就是@enablewebmvc
註解的自動配置功能。
@retention(retentionpolicy.runtime)
@target(elementtype.type)
@documented
@import(delegatingwebmvcconfiguration.class)
public @inte***ce enablewebmvc
上面是@enablewebmvc
的源**,通過使用@import(delegatingwebmvcconfiguration.class)
注入了delegatingwebmvcconfiguration
類。
delegatingwebmvcconfiguration
繼承自webmvcconfigurationsupport
。webmvcconfigurationsupport
是實現spring web mvc自動配置的核心類,它包含了很多方法,但大部分方法的處理方式都很類似。
...@bean
public viewresolver mvcviewresolver(@qualifier("mvccontentnegotiationmanager") contentnegotiationmanager contentnegotiationmanager)
...}
delegatingwebmvcconfiguration
中引用了乙個型別為webmvcconfigurercomposite
的物件。webmvcconfigurercomposite
既是webmvcconfigurer
的**類,也是webmvcconfigurer
的乙個具體實現。
delegatingwebmvcconfiguration
通過setconfigurers(...)
方法將ioc容器中的所有webmvcconfigurer
型別的bean物件注入到了webmvcconfigurercomposite
中。真正處理個性化設定的其實是webmvcconfigurercomposite
類。
@configuration(proxybeanmethods = false)
public class delegatingwebmvcconfiguration extends webmvcconfigurationsupport
}}
總結一下,spring web mvc框架中,個性化設定全部是通過**類webmvcconfigurercomposite
呼叫ioc容器中所有webmvcconfigurer
型別的bean物件實現的。開發人員可以設計多個實現了webmvcconfigurer
介面的@configuration
物件,用於對spring web mvc啟動過程進行個性化設定。開發人員不需要關心這些物件如何被調起,該過程將由spring web mvc框架自動處理。
package org.example.config;
import org.springframework.context.annotation.componentscan;
import org.springframework.context.annotation.configuration;
import org.springframework.web.servlet.config.annotation.enablewebmvc;
import org.springframework.web.servlet.config.annotation.webmvcconfigurer;
@configuration
@enablewebmvc
@componentscan(basepackages = "org.example.controller")
}
根據前面介紹,webmvcconfigurer
會被webmvcconfigurercomposite
載入,webmvcconfigurercomposite
則會被delegatingwebmvcconfiguration
呼叫,所以呼叫入口在delegatingwebmvcconfiguration
類上。也就是說,webmvcconfigurer
中的所有操作都可以通過改變delegatingwebmvcconfiguration
相關方法來實現。因此,delegatingwebmvcconfiguration
比webmvcconfigurer
更靈活。
我們可以使@configuration
物件直接繼承delegatingwebmvcconfiguration
來達到更靈活的配置功能。這時,在@configuration
上就不能再使用@enablewebmvc
了,否則delegatingwebmvcconfiguration
相關的**會被框架呼叫兩次,產生錯誤。
package org.example.config;
import org.springframework.context.annotation.componentscan;
import org.springframework.context.annotation.configuration;
import org.springframework.web.servlet.config.annotation.delegatingwebmvcconfiguration;
@configuration
@componentscan(basepackages = "org.example.controller")
}
好了,spring web mvc框架啟動配置的所有方法都介紹完了。整個系列主要介紹了四種啟動配置方式:
通過傳統的web.xml檔案進行spring web mvc應用的配置。
Spring Web MVC框架學習筆記
spring framework reference中文版摘錄。spring3.1 1.簡單介紹一下spring web mvc框架 在spring web mvc中可以使用普通的類,而不必實現特定的介面。spring的資料繫結和檢視實現非常的靈活,model採用map格式。2.dispatcher...
spring web mvc啟動流程分析
四 bean初始化 五 spring web mvc流程 spring web mvc 是 spring framework 的一部分,它是用於建立 web 應用程式的可擴充套件 mvc 框架。mvc為一種設計模式。由三部分model,view,controller組成,將邏輯與檢視資料操作分離開來...
Spring Web MVC的工作流程
spring web mvc工作流程如下 瀏覽器發出spring mvc請求,請求交給前端控制器dispatcherservlet處理.執行controller元件約定方法處理請求,在約定方法中可以呼叫service和dao等元件完成資料庫操作.約定方法可以返回乙個modelandview物件,封裝...