1. 程式人生 > >spring boot 的常用註解使用 總結 解析

spring boot 的常用註解使用 總結 解析

@PathVariable :
通過 @PathVariable 可以將 URL 中佔位符引數繫結到控制器處理方法的入參中:URL 中的 {xxx} 佔位符可以通過@PathVariable(“xxx“) 繫結到操作方法的入參中。
這裡寫圖片描述

如圖所示:在訪問這個方法的時候,1就相當於這個id,id不經可以作為請求路徑中的一部分,還可以作為引數傳入。並且這個1是必須輸入的,不然訪問不到這個方法,具體可以看第三張圖version是必須填入的
@Api @ApiOperation @ApiParam
@Api @ApiOperation @ApiParam主要是用於swagger提供開發者文件,文件中生成的註釋內容
這裡寫圖片描述


啟動專案以後,訪問http://localhost:8000/swagger-ui.html可以看到
這裡寫圖片描述

@RequestBody和@RequestParam
兩個註解都是用於方法中接收引數使用的,兩者也有一定的區別。
@RequestBody這個一般處理的是在ajax請求中宣告contentType: “application/json; charset=utf-8”時候。也就是json資料或者xml(我沒用過這個,用的是json)
@RequestParam這個一般就是在ajax裡面沒有宣告contentType的時候,為預設的。。。urlencode格式時,用這個。
@RequestBody可以直接將頁面中的引數封裝成實體類中的資料傳輸給後天

@PostMapping @GetMapping @RequestMapping
@GetMapping是一個組合註解,是@RequestMapping(method = RequestMethod.GET)的縮寫。
@PostMapping是一個組合註解,是@RequestMapping(method = RequestMethod.POST)的縮寫。
@PostMapping是一個非 組合註解,需要自定義請求方式。

@RestController和@Controller
RestController相當於Controller+ResponseBody註解
如果只是使用@RestController註解Controller,則Controller中的方法無法返回jsp頁面,或者html,配置的檢視解析器 ,也就是相當於在方法上面自動加了ResponseBody註解,所以沒辦法跳轉並傳輸資料到另一個頁面,所以InternalResourceViewResolver也不起作用,返回的內容就是Return 裡的內容,即資料直接甩在當前請求的頁面上,適用於ajax非同步請求。

 如果需要返回到指定頁面,則需要用 @Controller配合檢視解析器InternalResourceViewResolver才行。

如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody註解,這時候就相當於@RestController註解了。

@target註解
通常用在生命自定義一個新的註解時使用,用來定義這個自定義的註解可以作用在什麼上面,比如類、介面、註解、列舉, 欄位, 普通方法, 引數, 構造方法, 區域性變數, 註解, 包
使用方法如下圖:
這裡寫圖片描述

ElementType.METHOD表示作用在方法上,如果作用於其他地方,就會報錯。
@Retention註解
Reteniton的作用是定義被它所註解的註解保留多久,一共有三種策略,定義在RetentionPolicy列舉中

public enum RetentionPolicy {
    SOURCE,被編譯器忽略
    CLASS,註解將會被保留在Class檔案中,但在執行時並不會被VM保留。這是預設行為,所有沒有用Retention註解的註解,都會採用這種策略。
    RUNTIME保留至執行時。所以我們可以通過反射去獲取註解資訊。
}

@Inherited
Inherited作用是,使用此註解宣告出來的自定義註解,在使用此自定義註解時,如果註解在類上面時,子類會自動繼承此註解,否則的話,子類不會繼承此註解。這裡一定要記住,使用Inherited宣告出來的註解,只有在類上使用時才會有效,對方法,屬性等其他無效。