Spring Boot 中 controller層注解常用方法詳解
總結(jié):@RestController中的常用方法注解及其省略情況
在 Spring Boot 中,@RestController 是一個(gè)用于處理 RESTful 風(fēng)格請(qǐng)求的組合注解,它結(jié)合了 @Controller 和 @ResponseBody,使得返回的對(duì)象直接轉(zhuǎn)換成 JSON 或 XML 格式,無需視圖解析。它常用于 API 接口,尤其是處理 HTTP 請(qǐng)求時(shí)常用的方法注解如下:
1.@GetMapping
作用:處理 HTTP GET 請(qǐng)求,通常用于獲取資源。
示例:
@GetMapping("/greet")
public String greet() {
return "Hello, World!";
}省略情況:
可以省略 @RequestParam:如果請(qǐng)求參數(shù)的名稱與方法參數(shù)名稱一致,@RequestParam 可以省略。
如果沒有查詢參數(shù),也可以省略 @RequestParam 注解。
2.@PostMapping
作用:處理 HTTP POST 請(qǐng)求,通常用于創(chuàng)建資源。
示例:
@PostMapping("/createUser")
public String createUser(@RequestBody User user) {
return "User created: " + user.getName();
}省略情況:
@RequestBody 不能省略:在處理 POST 請(qǐng)求時(shí),@RequestBody 用于將請(qǐng)求體數(shù)據(jù)映射到 Java 對(duì)象。
3.@PutMapping
作用:處理 HTTP PUT 請(qǐng)求,通常用于更新資源。
示例:
@PutMapping("/updateUser/{id}")
public String updateUser(@PathVariable Long id, @RequestBody User user) {
return "User with id " + id + " updated to: " + user.getName();
}省略情況:
@PathVariable 和 @RequestBody 不能省略,除非你不需要從 URL 或請(qǐng)求體獲取參數(shù)。
4.@DeleteMapping
作用:處理 HTTP DELETE 請(qǐng)求,通常用于刪除資源。
示例:
@DeleteMapping("/deleteUser/{id}")
public String deleteUser(@PathVariable Long id) {
return "User with id " + id + " deleted";
}省略情況:
@PathVariable 不能省略,如果 URL 路徑中有動(dòng)態(tài)參數(shù)。
5.@PatchMapping
作用:處理 HTTP PATCH 請(qǐng)求,通常用于部分更新資源。
示例:
@PatchMapping("/updateUser/{id}")
public String patchUser(@PathVariable Long id, @RequestBody User user) {
return "User with id " + id + " partially updated to: " + user.getName();
}省略情況:
@PathVariable 和 @RequestBody 不能省略,除非請(qǐng)求中沒有對(duì)應(yīng)的路徑或請(qǐng)求體。
6.@RequestMapping
作用:通用注解,用于處理所有 HTTP 請(qǐng)求類型(如 GET、POST、PUT、DELETE 等),可以指定 method 屬性限制特定的 HTTP 方法。
示例:
@RequestMapping(value = "/greet", method = RequestMethod.GET)
public String greet() {
return "Hello, World!";
}省略情況:
使用更具體的注解(如 @GetMapping、@PostMapping 等)時(shí),@RequestMapping 可以省略。
7.@RequestParam
作用:獲取 HTTP 請(qǐng)求中的查詢參數(shù)。
示例:
@GetMapping("/greet")
public String greet(@RequestParam String name) {
return "Hello, " + name;
}省略情況:
可以省略:如果查詢參數(shù)的名稱與方法參數(shù)名稱一致,Spring 會(huì)自動(dòng)綁定查詢參數(shù)到方法參數(shù)。
8.@PathVariable
作用:從 URL 路徑中獲取動(dòng)態(tài)參數(shù)。
示例:
@GetMapping("/greet/{name}")
public String greet(@PathVariable String name) {
return "Hello, " + name;
}省略情況:
可以省略:如果方法參數(shù)的名稱與 URL 路徑變量名稱一致,Spring 自動(dòng)綁定。
9.@RequestBody
作用:將 HTTP 請(qǐng)求體中的數(shù)據(jù)映射為 Java 對(duì)象。
示例:
@PostMapping("/createUser")
public String createUser(@RequestBody User user) {
return "User created: " + user.getName();
}省略情況:
不能省略,如果方法需要從請(qǐng)求體中獲取數(shù)據(jù)。
10.@ResponseBody
作用:指示 Spring 將方法的返回值直接寫入 HTTP 響應(yīng)體,而不是進(jìn)行視圖解析。
示例:
@RestController
public class MyController {
@GetMapping("/greet")
@ResponseBody
public String greet() {
return "Hello, World!";
}
}省略情況:
可以省略:在 @RestController 中,@ResponseBody 已隱式包含,不需要顯式使用。
11.@Valid和@Validated
作用:用于驗(yàn)證請(qǐng)求體中的數(shù)據(jù),通常與 @RequestBody 配合使用。
示例:
@PostMapping("/createUser")
public String createUser(@RequestBody @Valid User user) {
return "User created: " + user.getName();
}省略情況:
可以省略:如果不需要對(duì)請(qǐng)求體進(jìn)行驗(yàn)證,@Valid 或 @Validated 可以省略。
12.@ModelAttribute
作用:將 HTTP 請(qǐng)求中的參數(shù)綁定到 Java 對(duì)象。常用于表單提交或 GET 請(qǐng)求的查詢參數(shù)。
示例:
@PostMapping("/createUser")
public String createUser(@ModelAttribute User user) {
return "User created: " + user.getName();
}省略情況:
可以省略:如果你直接使用 @RequestParam 或 @RequestBody 來處理參數(shù)綁定。
小結(jié):每種注解的省略情況
| 注解 | 省略情況 |
|---|---|
@GetMapping | 查詢參數(shù)與方法參數(shù)名稱一致時(shí),@RequestParam 可以省略。 |
@PostMapping | 不能省略 @RequestBody,除非不需要請(qǐng)求體數(shù)據(jù)。 |
@PutMapping | 不能省略 @PathVariable 和 @RequestBody。 |
@DeleteMapping | 不能省略 @PathVariable。 |
@PatchMapping | 不能省略 @PathVariable 和 @RequestBody。 |
@RequestMapping | 使用更具體的注解(如 @GetMapping 等)時(shí)可以省略。 |
@RequestParam | 方法參數(shù)名稱與查詢參數(shù)名稱一致時(shí),可以省略。 |
@PathVariable | 方法參數(shù)名稱與路徑變量名稱一致時(shí),可以省略。 |
@RequestBody | 不能省略,用于綁定請(qǐng)求體中的數(shù)據(jù)。 |
@ResponseBody | 在 @RestController 中可以省略。 |
@Valid / @Validated | 不進(jìn)行驗(yàn)證時(shí)可以省略。 |
@ModelAttribute | 可以省略,如果使用 @RequestParam 或 @RequestBody。 |
結(jié)論:
這些注解讓 Spring Boot 中的 API 方法更具靈活性。合理使用它們并了解何時(shí)可以省略,能夠讓代碼更加簡潔、易于維護(hù)。
到此這篇關(guān)于Spring Boot 中 controller層注解常用方法詳解的文章就介紹到這了,更多相關(guān)springboot controller層注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot中@RestController注解實(shí)現(xiàn)
- SpringBoot通過注解監(jiān)測Controller接口的代碼示例
- SpringBoot中的@RestControllerAdvice注解詳解
- springboot的controller層的常用注解說明
- Springboot之@Controller注解不生效問題及解決
- SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解
- SpringBoot中使用@ControllerAdvice注解詳解
- SpringBoot Controller中的常用注解
- SpringBoot http請(qǐng)求注解@RestController原理解析
相關(guān)文章
spring boot整合mybatis利用Mysql實(shí)現(xiàn)主鍵UUID的方法
這篇文章主要給大家介紹了關(guān)于spring boot整合mybatis利用Mysql實(shí)現(xiàn)主鍵UUID的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03
SpringBoot為何可以使用Jar包啟動(dòng)詳解
springboot jar包啟動(dòng)腳本,適用于快速啟動(dòng),刪除,重啟,以及查看狀態(tài),下面這篇文章主要給大家介紹了關(guān)于SpringBoot為何可以使用Jar包啟動(dòng)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
如何用Java結(jié)合經(jīng)緯度位置計(jì)算目標(biāo)點(diǎn)的日出日落時(shí)間詳解
這篇文章主詳細(xì)講解了如何基于目標(biāo)點(diǎn)的經(jīng)緯度計(jì)算日出日落時(shí)間,提供了在線API和Java庫兩種計(jì)算方法,并通過實(shí)際案例展示了其應(yīng)用,需要的朋友可以參考下2025-01-01
eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程)
這篇文章主要介紹了eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Hibernate基于ThreadLocal管理Session過程解析
這篇文章主要介紹了Hibernate基于ThreadLocal管理Session過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java實(shí)現(xiàn)航空航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)航空航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07

