一、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...