Spring3 後面版本的 新特性

2021-09-02 19:53:14 字數 2430 閱讀 1587

一、spring2.5之前,我們都是通過實現controller介面或其實現來定義我們的處理器類。

@controller:用於標識是處理器類;

請求到處理器功能方法的對映規則;

@requestparam:請求引數到處理器功能處理方法的方法引數上的繫結;

@modelattribute:請求引數到命令物件的繫結;

@sessionattributes:用於宣告session級別儲存的屬性,放置在處理器類上,通常列出模型屬性(如@modelattribute)對應的名稱,則這些屬性會透明的儲存到session中;

@initbinder:自定義資料繫結註冊支援,用於將請求引數轉換到命令物件屬性的對應型別;

@cookievalue:cookie資料到處理器功能處理方法的方法引數上的繫結;

@requestheader:請求頭(header)資料到處理器功能處理方法的方法引數上的繫結;

@requestbody:請求的body體的繫結(通過httpmessageconverter進行型別轉換);

@responsebody:處理器功能處理方法的返回值作為響應體(通過httpmessageconverter進行型別轉換);

@responsestatus:定義處理器功能處理方法/異常處理器返回的狀態碼和原因;

@exceptionhandler:註解式宣告異常處理器;

@pathvariable:請求uri中的模板變數部分到處理器功能處理方法的方法引數上的繫結,從而支援restful架構風格的uri;

四、還有比如:

jsr-303驗證框架的無縫支援(通過@valid註解定義驗證元資料);

使用spring 3開始的conversionservice進行型別轉換(propertyeditor依然有效),支援使用@numberformat 和 @datetimeformat來進行數字和日期的格式化;

httpmessageconverter(http輸入/輸出轉換器,比如json、xml等的資料輸出轉換器);

contentnegotiatingviewresolver,內容協商視**析器,它還是視**析器,只是它支援根據請求資訊將同一模型資料以不同的檢視方式展示(如json、xml、html等),restful架構風格中很重要的概念(同一資源,多種表現形式);

spring 3 引入 乙個  mvc xml的命名空間用於支援mvc配置,包括如:

支援spring3的conversionservice自動註冊

支援jsr-303驗證框架的自動探測並註冊(只需把jsr-303實現放置到classpath)

自動註冊相應的httpmessageconverter(用於支援@requestbody  和 @responsebody)(如xml輸入輸出轉換器(只需將jaxp實現放置到classpath)、json輸入輸出轉換器(只需將jackson實現放置到classpath))等。

:註冊自定義的處理器***;

:和parameterizableviewcontroller類似,收到相應請求後直接選擇相應的檢視;

:邏輯靜態資源路徑到物理靜態資源路徑的支援;

:當在web.xml 中dispatcherservlet使用/ 對映時,能對映靜態資源(當spring web mvc框架沒有處理請求對應的控制器時(如一些靜態資源),轉交給預設的servlet來響應靜態檔案,否則報404找不到資源錯誤,)。

……等等。

spring3 基於註解的AOP

要點 1.aop的概念真的很多。其實從使用出發無非兩點 1,定義要攔截的方法,2,實現攔截後的操作方法。2.基於註解的 aspect需要配合bean宣告來用,不然不報錯,不執行。官方doc貌似沒提倒。3.注入的bean物件,訪問其屬性需要生成get set方法,如果直接訪問也會出現空指標。autow...

基於spring 3 註解的junit測試

import org.junit.test import org.junit.runner.runwith import org.springframework.beans.factory.annotation.autowired import org.springframework.test.co...

spring 3中新增的 value註解

在spring 3.0中,可以通過使用 value,對一些如 properties檔案 中的檔案,進行鍵值對的注入,例子如下 的命名空間,然後 2 3 建立test.properties abc 123 4 import org.springframework.beans.factory.annot...