Spring Web MVC配置方式彙總(五)

2021-10-19 04:32:20 字數 3544 閱讀 5777

本文將介紹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繼承自webmvcconfigurationsupportwebmvcconfigurationsupport是實現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相關方法來實現。因此,delegatingwebmvcconfigurationwebmvcconfigurer更靈活。

我們可以使@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物件,封裝...