SpringMVC注解

RequestMapping

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {};
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};
}
  • name表示這個注解的名稱,
  • value和path可以共用;
  • method表示支持的RequestMethod的種類包括get,post等
  • params 表示指定request中必須包含某些參數(shù)值是,才讓該方法處理。
  • headers指定request中必須包含某些指定的header值,才能讓該方法處理請求
  • consumes表示指定處理請求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;
  • produces 表示返回內(nèi)容的類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回
    當consumes或者produces不滿足時,返回http403,不支持的媒體類型

Autowired and Resource

  • Autowired 是Spring提供的注解,默認按類型注入,找不到或者找到倆個相同類型bean則報錯,可以和@Qualifier一起搭配使用,表示找不到type則根據(jù)name查找
@Autowired
@Qualifier("userDao")
  • Resource默認按名稱查找
    -- 指定了name則按name查找,找不到拋異常
    -- 指定了type按type查找,無需使用類似于 @Resource(type=Car.class) 的注釋方式,因為 Bean 的類型信息可以通過Java 反射從代碼中獲取。
    -- 指定了name和type,則按按倆者尋找符合條件的唯一的bean,找不到報錯
    -- 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;如果沒有匹配,則回退為一個原始類型進行匹配,如果匹配則自動裝配

@PathVariable

將請求中的變量映射到方法參數(shù)上,同時還對變量支持正則表達式

 @RequestMapping(value = "/sayhello/{type:[a-z-]+}", method = {RequestMethod.GET}, consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public String say(@PathVariable String type, String word) {
        return type + word;
    }

@RequestParam

功能相當于request.getParameter("name"),有三個屬性,value指定映射的字段名稱,required=false表示該屬性不是必傳的,defaultValue可以指定該屬性的默認值。當url有倆個word時,會默認把倆個word的value合并成一個String.
當該注解使用在Map<String, String> or MultiValueMap<String, String>這些類型上時,就可以匹配所有的入?yún)?/p>

@RequestBody和@ResponseBody

  • @RequestBody是把request body里面的數(shù)據(jù)綁定到參數(shù)上
  • @ResponseBody是把返回類型寫到HTTP response body
    倆者都使用系統(tǒng)默認的HttpMessageConverter進行解析,@RequestBody使用header部分的Content-Type的格式解析,如果沒有,則報錯,@ResponseBody根據(jù)Request對象的header部分的Accept屬性(逗號分隔),逐一按accept中的類型,去遍歷能處理的HttpMessageConverter,Accept屬性為空,則默認按所有的MediaType類型去匹配。
      如果是application/x-www-form-urlencoded,則是否使用@RequestBody時為可選,也可以用@RequestParam,@ModelAttribute來處理.若是multipart/form-data,@RequestBody不能處理這種格式的數(shù)據(jù);而其他的格式,必須使用@RequestBody來處理,包括application/json,application/xml.
      若是PUT方式提交的,也是根據(jù)Content-Type的值來判斷.application/x-www-form-urlencoded這回是必須用@RequestBody來處理,而multipart/form-data,則同樣還是不能處理;其他,也同樣還是必須用@RequestBody來處理.
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,662評論 19 139
  • 1、@Controller 在SpringMVC 中,控制器Controller 負責處理由DispatcherS...
    jkian閱讀 1,062評論 5 14
  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎的功能是IoC(控制反轉)容器,...
    simoscode閱讀 6,852評論 2 22
  • 1.1 Spring IoC容器和bean簡介 本章介紹了Spring Framework實現(xiàn)的控制反轉(IoC)...
    起名真是難閱讀 2,675評論 0 8
  • 天色微暗路人歸,清風送爽有蟬鳴。 自古深情留不住,贈予江河無盡流。
    悠游you閱讀 210評論 0 1

友情鏈接更多精彩內(nèi)容