69 個(gè)Spring mvc 全部注解:真實(shí)業(yè)務(wù)使用案例說(shuō)明(必須收藏)

image.png

Spring MVC框架的注解為Web開(kāi)發(fā)提供了一種簡(jiǎn)潔而強(qiáng)大的聲明式方法。從控制器的定義、請(qǐng)求映射、參數(shù)綁定到異常處理和響應(yīng)構(gòu)建,這些注解涵蓋了Web應(yīng)用程序開(kāi)發(fā)的各個(gè)方面。它們不僅簡(jiǎn)化了編碼工作,還增強(qiáng)了代碼的清晰度和應(yīng)用程序的可維護(hù)性。通過(guò)@Controller、@RequestMapping、@PathVariable、@RequestParam、@RequestBody等注解,Spring MVC使得處理復(fù)雜的Web請(qǐng)求變得容易,同時(shí)@Valid@Validated注解確保了數(shù)據(jù)的準(zhǔn)確性。全局異常處理和響應(yīng)狀態(tài)管理通過(guò)@ExceptionHandler@ResponseStatus注解實(shí)現(xiàn),而@ResponseBody@RestController注解則為RESTful服務(wù)提供了便利。這些注解的集合構(gòu)成了Spring MVC的核心,使其成為開(kāi)發(fā)靈活且功能豐富的Web應(yīng)用程序的首選框架。

肖哥彈架構(gòu) 跟大家“彈彈” Spring常用注解

歷史熱點(diǎn)文章

@Controller

1.1 注解作用介紹 @Controller 注解用于標(biāo)識(shí)一個(gè)類為Spring MVC控制器,負(fù)責(zé)處理HTTP請(qǐng)求并返回視圖。

1.2 注解屬性介紹

  • 無(wú)特定屬性。

1.3 請(qǐng)求參數(shù)案例

  • 無(wú)。

1.4 注解業(yè)務(wù)案例

@Controller
public class MyController {
    // 控制器方法定義...
}

@RestController

2.1 注解作用介紹 @RestController 注解是@Controller@ResponseBody的組合,用于RESTful Web服務(wù)的控制器。
2.2 注解屬性介紹

  • 無(wú)特定屬性。

2.3 請(qǐng)求參數(shù)案例

  • 無(wú)。

2.4 注解業(yè)務(wù)案例

java
@RestController
public class MyRestController {
    // 控制器中的方法將直接返回響應(yīng)體。
}

@RequestMapping

3.1 注解作用介紹 @RequestMapping 注解用于將HTTP請(qǐng)求映射到控制器的處理方法上。

3.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。
  • method: 支持的HTTP方法。
  • params: 請(qǐng)求參數(shù)條件。
  • headers: 請(qǐng)求頭條件。

3.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)value設(shè)置為"/users/{id}",methodRequestMethod.GET,params"active=true",headers"Accept=application/json"時(shí):
GET /users/123?active=true
Accept: application/json

3.4 注解業(yè)務(wù)案例

@RequestMapping(value = "/users/{id}", method = RequestMethod.GET, params = "active=true", headers = "Accept=application/json")
public ResponseEntity<List<User>> listActiveUsers(@PathVariable int id) {
    // 根據(jù)用戶ID獲取激活用戶的列表。
}

@GetMapping

4.1 注解作用介紹 @GetMapping 注解用于映射GET請(qǐng)求到控制器的方法上。

4.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

4.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)value設(shè)置為"/users/{id}"時(shí),請(qǐng)求/users/123將映射到方法:
GET /users/123

4.4 注解業(yè)務(wù)案例

@GetMapping("/users/{id}")
public User getUser(@PathVariable int id) {
    // 根據(jù)路徑變量{id}獲取用戶信息。
}

@PostMapping

5.1 注解作用介紹 @PostMapping 注解用于映射POST請(qǐng)求到控制器的方法上。

5.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

5.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)value設(shè)置為"/users"時(shí),帶有JSON請(qǐng)求體的POST請(qǐng)求將映射到方法:
POST /users
Content-Type: application/json
{
  "name": "John Doe",
  "age": 30
}

5.4 注解業(yè)務(wù)案例

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // 使用JSON請(qǐng)求體中的數(shù)據(jù)創(chuàng)建新用戶。
}

@PutMapping

6.1 注解作用介紹 @PutMapping 注解用于映射HTTP PUT請(qǐng)求到控制器的方法上,通常用于更新資源。

6.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

6.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)value設(shè)置為"/users/{id}"時(shí),請(qǐng)求將映射到更新用戶的方法:
PUT /users/123
Content-Type: application/json

{
  "name": "Jane Doe",
  "age": 25
}

6.4 注解業(yè)務(wù)案例

@PutMapping("/users/{id}")
public User updateUser(@PathVariable int id, @RequestBody User userDetails) {
    // 使用請(qǐng)求體中的數(shù)據(jù)更新指定ID的用戶信息。
}

@DeleteMapping

7.1 注解作用介紹 @DeleteMapping 注解用于映射HTTP DELETE請(qǐng)求到控制器的方法上,用于刪除資源。

7.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

7.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)value設(shè)置為"/users/{id}"時(shí),請(qǐng)求將映射到刪除用戶的方法:
DELETE /users/123

7.4 注解業(yè)務(wù)案例

@DeleteMapping("/users/{id}")
public ResponseEntity<?> deleteUser(@PathVariable int id) {
    // 根據(jù)用戶ID刪除用戶。
}

@PatchMapping

8.1 注解作用介紹 @PatchMapping 注解用于映射HTTP PATCH請(qǐng)求到控制器的方法上,通常用于部分更新資源。

8.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

8.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)value設(shè)置為"/users/{id}"時(shí),請(qǐng)求將映射到部分更新用戶的方法:
PATCH /users/123
Content-Type: application/json

{
  "name": "Jane Doe"
}

8.4 注解業(yè)務(wù)案例

@PatchMapping("/users/{id}")
public User patchUser(@PathVariable int id, @RequestBody Map<String, Object> updates) {
    // 使用請(qǐng)求體中的部分?jǐn)?shù)據(jù)更新指定ID的用戶信息。
}

@RequestParam

9.1 注解作用介紹 @RequestParam 注解用于將請(qǐng)求參數(shù)綁定到控制器方法的參數(shù)上。

9.2 注解屬性介紹

  • value: 請(qǐng)求參數(shù)的名稱。
  • required: 指示參數(shù)是否必須。
  • defaultValue: 參數(shù)的默認(rèn)值。

9.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)請(qǐng)求包含查詢參數(shù)"page""size"時(shí):
GET /items?page=1&size=10

9.4 注解業(yè)務(wù)案例

@GetMapping("/items")
public List<Item> listItems(
    @RequestParam(value = "page", defaultValue = "1") int page,
    @RequestParam(value = "size", defaultValue = "10") int size
) {
    // 根據(jù)請(qǐng)求的頁(yè)碼和大小返回項(xiàng)目列表。
}

@PathVariable

10.1 注解作用介紹 @PathVariable 注解用于將URL中的模板變量綁定到控制器方法的參數(shù)上。

10.2 注解屬性介紹

  • value: 模板變量的名稱。
  • required: 指示變量是否必須。

10.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)URL模板包含"{id}"時(shí),請(qǐng)求/users/123將映射到方法:
GET /users/123

10.4 注解業(yè)務(wù)案例

@GetMapping("/users/{id}")
public User getUserById(@PathVariable int id) {
    // 根據(jù)URL路徑變量{id}獲取用戶信息。
}

@RequestBody

11.1 注解作用介紹 @RequestBody 注解用于將請(qǐng)求體綁定到控制器方法的參數(shù)上。

11.2 注解屬性介紹

  • 無(wú)特定屬性。

11.3 請(qǐng)求參數(shù)案例

  • 例如,POST請(qǐng)求包含JSON格式的請(qǐng)求體:
POST /users
Content-Type: application/json
{
  "name": "John Doe",
  "age": 30
}

11.4 注解業(yè)務(wù)案例

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // 使用請(qǐng)求體中的數(shù)據(jù)創(chuàng)建新用戶。
}

@RequestHeader

12.1 注解作用介紹 @RequestHeader 注解用于將請(qǐng)求頭綁定到控制器方法的參數(shù)上。

12.2 注解屬性介紹

  • value: 請(qǐng)求頭的名稱。
  • required: 指示請(qǐng)求頭是否必須。

12.3 請(qǐng)求參數(shù)案例

  • 例如,請(qǐng)求包含自定義請(qǐng)求頭"X-Request-ID"
GET /users
X-Request-ID: 123456789

12.4 注解業(yè)務(wù)案例

@GetMapping("/users")
public List<User> listUsers(@RequestHeader(value = "X-Request-ID", required = false) String requestId) {
    // 根據(jù)請(qǐng)求頭"X-Request-ID"記錄日志或進(jìn)行追蹤。
}

@CookieValue

13.1 注解作用介紹 @CookieValue 注解用于將請(qǐng)求中Cookie的值綁定到控制器方法的參數(shù)上。

13.2 注解屬性介紹

  • value: Cookie的名稱。
  • required: 指示Cookie是否必須。

13.3 請(qǐng)求參數(shù)案例

  • 例如,請(qǐng)求包含名為"sessionId"的Cookie:
GET /users
Cookie: sessionId=abc123def456

13.4 注解業(yè)務(wù)案例

@GetMapping("/users")
public List<User> listUsers(@CookieValue(value = "sessionId", required = false) String sessionId) {
    // 根據(jù)Cookie中的"sessionId"進(jìn)行會(huì)話管理。
}

@ModelAttribute

14.1 注解作用介紹 @ModelAttribute 注解用于將請(qǐng)求參數(shù)或表單數(shù)據(jù)綁定到模型屬性上。

14.2 注解屬性介紹

  • value: 模型屬性的名稱。
  • required: 指示模型屬性是否必須。

14.3 請(qǐng)求參數(shù)案例

  • 例如,一個(gè)包含用戶信息的POST請(qǐng)求:
POST /users
Content-Type: application/x-www-form-urlencoded

name=John+Doe&age=30

14.4 注解業(yè)務(wù)案例

@PostMapping("/users")
public String addUser(Model model, @ModelAttribute User user) {
    model.addAttribute("user", user);
    // 將用戶信息添加到模型中,以便在視圖中展示。
}

@SessionAttribute

15.1 注解作用介紹 @SessionAttribute 注解用于將模型屬性存儲(chǔ)到HTTP會(huì)話中。

15.2 注解屬性介紹

  • name: 會(huì)話屬性的名稱。
  • value: 會(huì)話屬性的值。

15.3 請(qǐng)求參數(shù)案例

  • 例如,將用戶信息存儲(chǔ)在會(huì)話中,以便跨請(qǐng)求訪問(wèn):
GET /user/profile
Cookie: JSESSIONID=abc123; user=John Doe

15.4 注解業(yè)務(wù)案例

@SessionAttribute(name = "user")
public String showProfile(Model model) {
    String user = (String) model.asMap().get("user");
    // 從會(huì)話中獲取用戶信息。
}

@RequestAttribute

16.1 注解作用介紹 @RequestAttribute 注解用于將請(qǐng)求屬性綁定到控制器方法的參數(shù)上。

16.2 注解屬性介紹

  • value: 請(qǐng)求屬性的名稱。

16.3 請(qǐng)求參數(shù)案例

  • 例如,從請(qǐng)求轉(zhuǎn)發(fā)中攜帶屬性:
POST /login
...

Redirect /user/profile?role=admin

16.4 注解業(yè)務(wù)案例

@GetMapping("/user/profile")
public String showProfile(@RequestAttribute("role") String role) {
    // 根據(jù)請(qǐng)求屬性"role"展示不同的用戶信息。
}

@ResponseStatus

17.1 注解作用介紹 @ResponseStatus 注解用于指定HTTP響應(yīng)的status。

17.2 注解屬性介紹

  • value: 指定的HTTP狀態(tài)。

17.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)資源未找到時(shí)返回404狀態(tài):
GET /users/999
HTTP/1.1 404 Not Found

17.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public ResponseEntity<Object> handleResourceNotFound() {
        // 處理資源未找到的異常。
    }
}

@ExceptionHandler

18.1 注解作用介紹 @ExceptionHandler 注解用于處理控制器中拋出的特定異常。

18.2 注解屬性介紹

  • value: 指定異常的類型。

18.3 請(qǐng)求參數(shù)案例

  • 例如,捕獲并處理自定義的業(yè)務(wù)異常:
POST /users
...
HTTP/1.1 400 Bad Request

18.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(BusinessException.class)
    public ResponseEntity<Object> handleBusinessException(BusinessException ex) {
        // 處理業(yè)務(wù)異常。
    }
}

@CrossOrigin

19.1 注解作用介紹 @CrossOrigin 注解用于啟用跨源請(qǐng)求。

19.2 注解屬性介紹

  • origins: 允許的來(lái)源。
  • methods: 允許的HTTP方法。
  • allowedHeaders: 允許的請(qǐng)求頭。

19.3 請(qǐng)求參數(shù)案例

  • 例如,允許特定域名進(jìn)行跨域GET請(qǐng)求:
OPTIONS /api/data
Access-Control-Request-Method: GET
Origin: http://example.com

19.4 注解業(yè)務(wù)案例

@CrossOrigin(origins = "http://example.com", methods = {RequestMethod.GET})
@GetMapping("/api/data")
public List<Data> getAllData() {
    // 返回?cái)?shù)據(jù)列表,允許跨域GET請(qǐng)求。
}

@MatrixVariable

20.1 注解作用介紹 @MatrixVariable 注解用于從URL的矩陣變量中獲取值。

20.2 注解屬性介紹

  • pathVar: 指定矩陣變量所在的路徑變量名稱。

20.3 請(qǐng)求參數(shù)案例

  • 例如,從URL中獲取矩陣變量的值:
GET /api/users/123;role=admin

20.4 注解業(yè)務(wù)案例

@GetMapping("/api/users/{id}")
public User getUser(@MatrixVariable(name = "role", pathVar = "id") String role) {
    // 根據(jù)矩陣變量"role"獲取用戶角色。
}

@InitBinder

21.1 注解作用介紹 @InitBinder 注解用于在控制器中初始化WebDataBinder,通常用于注冊(cè)自定義屬性編輯器。

21.2 注解屬性介紹

  • 無(wú)特定屬性。

21.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

21.4 注解業(yè)務(wù)案例

@Controller
public class MyController {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 注冊(cè)自定義屬性編輯器。
    }
}

@ResponseStatus

22.1 注解作用介紹 @ResponseStatus 注解用于設(shè)置響應(yīng)的HTTP狀態(tài)碼。

22.2 注解屬性介紹

  • value: 指定的HTTP狀態(tài)碼。

22.3 請(qǐng)求參數(shù)案例

  • 例如,當(dāng)發(fā)生特定異常時(shí),返回HTTP 503 Service Unavailable狀態(tài)碼。

22.4 注解業(yè)務(wù)案例

@ResponseStatus(value = HttpStatus.SERVICE_UNAVAILABLE)
public class ServiceUnavailableException extends RuntimeException {
    // 自定義異常類。
}

@Validated

23.1 注解作用介紹 @Validated 注解用于在類或方法級(jí)別指定驗(yàn)證組,增強(qiáng)驗(yàn)證邏輯。

23.2 注解屬性介紹

  • groups: 指定驗(yàn)證組。

23.3 請(qǐng)求參數(shù)案例

  • 例如,使用特定的驗(yàn)證組對(duì)用戶注冊(cè)信息進(jìn)行驗(yàn)證。

23.4 注解業(yè)務(wù)案例

@Validated(UserValidationGroup.class)
public class UserRegistrationController {
    // 該控制器中的方法將使用UserValidationGroup驗(yàn)證組。
}

@Validated Annotation with Groups

24.1 注解作用介紹 @Validated 注解與groups屬性結(jié)合使用,允許在方法級(jí)別指定多個(gè)驗(yàn)證組。

24.2 注解屬性介紹

  • value: 指定的驗(yàn)證組數(shù)組。

24.3 請(qǐng)求參數(shù)案例

  • 例如,對(duì)更新操作使用不同的驗(yàn)證組。

24.4 注解業(yè)務(wù)案例

@Validated({UpdateGroup.class, AnotherUpdateGroup.class})
public void updateEntity(@Valid @NotNull MyEntity entity) {
    // 使用多個(gè)驗(yàn)證組對(duì)實(shí)體進(jìn)行驗(yàn)證。
}

@RequestBodyAdvice

25.1 注解作用介紹 @RequestBodyAdvice 注解用于在讀取請(qǐng)求正文之前或之后對(duì)請(qǐng)求正文進(jìn)行處理。

25.2 注解屬性介紹

  • beforeBodyRead: 指定在讀取請(qǐng)求正文之前的處理。
  • afterBodyRead: 指定在讀取請(qǐng)求正文之后的處理。

25.3 請(qǐng)求參數(shù)案例

  • 例如,對(duì)請(qǐng)求正文進(jìn)行日志記錄或修改。

25.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class MyRequestBodyAdvice {
    @RequestBodyAdvice(beforeBodyRead = "logBeforeRead")
    public void logRequestBody() {
        // 在讀取請(qǐng)求正文之前進(jìn)行日志記錄。
    }
}

@ControllerAdvice

26.1 注解作用介紹 @ControllerAdvice 注解用于定義一個(gè)類,該類可以包含多個(gè)@ExceptionHandler、@InitBinder@ModelAttribute方法。

26.2 注解屬性介紹

  • basePackages: 指定要掃描的包。

26.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

26.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class MyGlobalControllerAdvice {
    // 包含全局異常處理、屬性初始化和模型屬性的方法。
}

@MatrixParam

27.1 注解作用介紹 @MatrixParam 注解用于從URL的矩陣變量中獲取值。

27.2 注解屬性介紹

  • name: 矩陣變量的名稱。

27.3 請(qǐng)求參數(shù)案例

  • 例如,從URL中獲取矩陣變量的值:
GET /users;role=admin/123

27.4 注解業(yè)務(wù)案例

@GetMapping("/users/{id}")
public User getUser(@MatrixParam(name = "role") String role) {
    // 根據(jù)矩陣變量"role"獲取用戶角色。
}

@SessionAttributes

28.1 注解作用介紹 @SessionAttributes 注解用于將模型屬性添加到HTTP會(huì)話中,以便在多個(gè)請(qǐng)求之間保持它們的值。

28.2 注解屬性介紹

  • names: 要存儲(chǔ)在會(huì)話中的屬性名稱數(shù)組。
  • types: 要存儲(chǔ)在會(huì)話中的屬性類型。

28.3 請(qǐng)求參數(shù)案例

  • 例如,將用戶信息存儲(chǔ)在會(huì)話中,以便在用戶會(huì)話期間保持狀態(tài):
GET /user/profile
Cookie: JSESSIONID=abc123; user=John Doe

28.4 注解業(yè)務(wù)案例

@Controller
@SessionAttributes("user")
public class UserController {
    // 這個(gè)控制器中的模型屬性"user"將被存儲(chǔ)在會(huì)話中。
}

@RequestAttribute

29.1 注解作用介紹 @RequestAttribute 注解用于將請(qǐng)求屬性綁定到控制器方法的參數(shù)上。

29.2 注解屬性介紹

  • value: 請(qǐng)求屬性的名稱。

29.3 請(qǐng)求參數(shù)案例

  • 例如,從請(qǐng)求中獲取屬性"searchQuery":
GET /search?searchQuery=spring

29.4 注解業(yè)務(wù)案例

@GetMapping("/search")
public String search(@RequestAttribute("searchQuery") String query) {
    // 使用請(qǐng)求屬性"searchQuery"執(zhí)行搜索。
}

@ModelAttribute

30.1 注解作用介紹 @ModelAttribute 注解用于將請(qǐng)求參數(shù)或會(huì)話屬性綁定到模型對(duì)象上。

30.2 注解屬性介紹

  • value: 模型對(duì)象的名稱。

30.3 請(qǐng)求參數(shù)案例

  • 例如,將表單提交的參數(shù)綁定到用戶對(duì)象上:
POST /user/register
Content-Type: application/x-www-form-urlencoded

name=John+Doe&email=john.doe@example.com

30.4 注解業(yè)務(wù)案例

@PostMapping("/user/register")
public String registerUser(@ModelAttribute("user") User user) {
    // 使用模型中的"user"對(duì)象注冊(cè)新用戶。
}

@CookieValue

31.1 注解作用介紹 @CookieValue 注解用于將請(qǐng)求中的Cookie值綁定到控制器方法的參數(shù)上。

31.2 注解屬性介紹

  • value: Cookie的名稱。

31.3 請(qǐng)求參數(shù)案例

  • 例如,從請(qǐng)求中獲取名為"sessionId"的Cookie值:
GET /user/profile
Cookie: sessionId=abc123

31.4 注解業(yè)務(wù)案例

@GetMapping("/user/profile")
public String showProfile(@CookieValue("sessionId") String sessionId) {
    // 使用Cookie中的"sessionId"進(jìn)行會(huì)話管理。
}

@RequestBody

32.1 注解作用介紹 @RequestBody 注解用于將請(qǐng)求正文綁定到控制器方法的參數(shù)上。

32.2 注解屬性介紹

  • 無(wú)特定屬性。

32.3 請(qǐng)求參數(shù)案例

  • 例如,接收J(rèn)SON格式的請(qǐng)求正文:
POST /api/data
Content-Type: application/json

{
  "key": "value"
}

32.4 注解業(yè)務(wù)案例

@PostMapping("/api/data")
public DataItem createDataItem(@RequestBody DataItem data) {
    // 使用請(qǐng)求正文中的數(shù)據(jù)創(chuàng)建新的數(shù)據(jù)項(xiàng)。
}

@ResponseBody

33.1 注解作用介紹 @ResponseBody 注解用于指示方法的返回值直接作為HTTP響應(yīng)正文返回。

33.2 注解屬性介紹

  • 無(wú)特定屬性。

33.3 請(qǐng)求參數(shù)案例

  • 例如,返回JSON格式的響應(yīng)正文:
GET /api/data/1
Content-Type: application/json

{
  "id": 1,
  "key": "value"
}

33.4 注解業(yè)務(wù)案例

@GetMapping("/api/data/{id}")
@ResponseBody
public DataItem getDataItem(@PathVariable int id) {
    // 直接將數(shù)據(jù)項(xiàng)作為JSON響應(yīng)正文返回。
}

@ResponseStatus

34.1 注解作用介紹 @ResponseStatus 注解用于設(shè)置響應(yīng)的HTTP狀態(tài)碼。

34.2 注解屬性介紹

  • value: 指定的HTTP狀態(tài)碼。

34.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

34.4 注解業(yè)務(wù)案例

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
    // 自定義異常,用于當(dāng)資源未找到時(shí)。
}

@ExceptionHandler

35.1 注解作用介紹 @ExceptionHandler 注解用于處理控制器拋出的特定異常。

35.2 注解屬性介紹

  • value: 指定異常的類型。

35.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

35.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<String> handleResourceNotFound() {
        // 處理資源未找到的異常。
    }
}

@ControllerAdvice

36.1 注解作用介紹 @ControllerAdvice 注解用于定義一個(gè)類,該類可以包含多個(gè)@ExceptionHandler、@InitBinder@ModelAttribute方法,用于全局異常處理和數(shù)據(jù)綁定。

36.2 注解屬性介紹

  • basePackages: 指定要掃描的包。

36.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

36.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class GlobalControllerAdvice {
    // 包含全局異常處理、屬性初始化和模型屬性的方法。
}

@MatrixVariable

37.1 注解作用介紹 @MatrixVariable 注解用于從URL的矩陣變量中獲取值。

37.2 注解屬性介紹

  • pathVar: 指定矩陣變量所在的路徑變量名稱。

37.3 請(qǐng)求參數(shù)案例

  • 例如,從URL中獲取矩陣變量的值:
GET /users;role=admin/123

37.4 注解業(yè)務(wù)案例

@GetMapping("/users/{id}")
public User getUser(@MatrixVariable(name = "role", pathVar = "id") String role) {
    // 根據(jù)矩陣變量"role"獲取用戶角色。
}

@CrossOrigin

38.1 注解作用介紹 @CrossOrigin 注解用于啟用跨源請(qǐng)求。

38.2 注解屬性介紹

  • origins: 允許的來(lái)源。
  • methods: 允許的HTTP方法。
  • allowedHeaders: 允許的請(qǐng)求頭。

38.3 請(qǐng)求參數(shù)案例

  • 例如,允許特定域名進(jìn)行跨域GET請(qǐng)求:
OPTIONS /api/data
Access-Control-Request-Method: GET
Origin: http://example.com

38.4 注解業(yè)務(wù)案例

@CrossOrigin(origins = "http://example.com", methods = {RequestMethod.GET})
@GetMapping("/api/data")
public List<Data> getAllData() {
    // 返回?cái)?shù)據(jù)列表,允許跨域GET請(qǐng)求。
}

@PostMapping

39.1 注解作用介紹 @PostMapping 注解用于映射HTTP POST請(qǐng)求到控制器的方法上。

39.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。
  • consumes: 指定請(qǐng)求體的媒體類型。

39.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送POST請(qǐng)求創(chuàng)建新用戶:
POST /users
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john.doe@example.com"
}

39.4 注解業(yè)務(wù)案例

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) {
    // 使用請(qǐng)求體中的數(shù)據(jù)創(chuàng)建新用戶。
}

@GetMapping

40.1 注解作用介紹 @GetMapping 注解用于映射HTTP GET請(qǐng)求到控制器的方法上。

40.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

40.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送GET請(qǐng)求獲取用戶列表:
GET /users

40.4 注解業(yè)務(wù)案例

@GetMapping("/users")
public List<User> getUsers() {
    // 獲取用戶列表。
}

@PutMapping

41.1 注解作用介紹 @PutMapping 注解用于映射HTTP PUT請(qǐng)求到控制器的方法上,通常用于更新資源。

41.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。
  • consumes: 指定請(qǐng)求體的媒體類型。

41.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送PUT請(qǐng)求更新用戶信息:
PUT /users/1
Content-Type: application/json

{
  "name": "Jane Doe",
  "email": "jane.doe@example.com"
}

41.4 注解業(yè)務(wù)案例

@PutMapping("/users/{id}")
public ResponseEntity<User> updateUser(@PathVariable int id, @RequestBody User userDetails) {
    // 使用請(qǐng)求體中的數(shù)據(jù)更新指定ID的用戶信息。
}

@DeleteMapping

42.1 注解作用介紹 @DeleteMapping 注解用于映射HTTP DELETE請(qǐng)求到控制器的方法上,用于刪除資源。

42.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。

42.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送DELETE請(qǐng)求刪除用戶:
DELETE /users/1

42.4 注解業(yè)務(wù)案例

@DeleteMapping("/users/{id}")
public ResponseEntity<?> deleteUser(@PathVariable int id) {
    // 根據(jù)用戶ID刪除用戶。
}

@PatchMapping

43.1 注解作用介紹 @PatchMapping 注解用于映射HTTP PATCH請(qǐng)求到控制器的方法上,通常用于部分更新資源。

43.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。
  • consumes: 指定請(qǐng)求體的媒體類型。

43.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送PATCH請(qǐng)求部分更新用戶信息:
PATCH /users/1
Content-Type: application/json

{
  "name": "Jane Doe"
}

43.4 注解業(yè)務(wù)案例

@PatchMapping("/users/{id}")
public ResponseEntity<User> patchUser(@PathVariable int id, @RequestBody Map<String, Object> updates) {
    // 使用請(qǐng)求體中的部分?jǐn)?shù)據(jù)更新指定ID的用戶信息。
}

@RequestMapping

44.1 注解作用介紹 @RequestMapping 注解是一個(gè)通用的請(qǐng)求映射注解,可以用于映射不同類型的HTTP請(qǐng)求到控制器的處理方法。

44.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。
  • method: 支持的HTTP方法。
  • params: 根據(jù)請(qǐng)求參數(shù)的存在或不存在來(lái)決定是否匹配。
  • headers: 根據(jù)請(qǐng)求頭來(lái)決定是否匹配。

44.3 請(qǐng)求參數(shù)案例

  • 例如,映射滿足特定請(qǐng)求參數(shù)和頭條件的GET請(qǐng)求:
GET /users?active=true
Accept: application/json

44.4 注解業(yè)務(wù)案例

@RequestMapping(value = "/users", method = RequestMethod.GET, params = "active", headers = "Accept=application/json")
public List<User> getActiveUsers() {
    // 根據(jù)請(qǐng)求參數(shù)和頭信息獲取激活用戶列表。
}

@PostMapping with consumes Attribute

45.1 注解作用介紹 @PostMapping 注解與 consumes 屬性結(jié)合使用,用于指定請(qǐng)求體的媒體類型。

45.2 注解屬性介紹

  • consumes: 指定請(qǐng)求體的媒體類型,如 application/json

45.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送POST請(qǐng)求創(chuàng)建新用戶,請(qǐng)求體為JSON格式:
POST /users
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john.doe@example.com"
}

45.4 注解業(yè)務(wù)案例

@PostMapping(value = "/users", consumes = "application/json")
public ResponseEntity<User> createUser(@RequestBody User user) {
    // 使用JSON請(qǐng)求體中的數(shù)據(jù)創(chuàng)建新用戶。
}

@GetMapping with produces Attribute

46.1 注解作用介紹 @GetMapping 注解與 produces 屬性結(jié)合使用,用于指定響應(yīng)的媒體類型。

46.2 注解屬性介紹

  • produces: 指定響應(yīng)的媒體類型,如 application/json。

46.3 請(qǐng)求參數(shù)案例

  • 例如,發(fā)送GET請(qǐng)求獲取用戶列表,期望響應(yīng)為JSON格式:
GET /users
Accept: application/json

46.4 注解業(yè)務(wù)案例

@GetMapping(value = "/users", produces = "application/json")
public ResponseEntity<List<User>> getUsers() {
    // 以JSON格式返回用戶列表。
}

@ExceptionHandler with responseBody Attribute

47.1 注解作用介紹 @ExceptionHandler 注解與 responseBody 屬性結(jié)合使用,用于返回異常信息。

47.2 注解屬性介紹

  • responseBody: 指定異常處理方法的返回值是否作為響應(yīng)正文。

47.3 請(qǐng)求參數(shù)案例

  • 例如,處理資源未找到的異常,并返回JSON格式的錯(cuò)誤信息:
GET /users/999
HTTP/1.1 404 Not Found
Content-Type: application/json

{"timestamp": "2023-10-10T12:00:00", "status": 404, "error": "Not Found"}

47.4 注解業(yè)務(wù)案例

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    @ResponseBody
    public ResponseEntity<Object> handleResourceNotFound() {
        // 返回JSON格式的錯(cuò)誤信息。
    }
}

@ControllerAdvice with basePackages

48.1 注解作用介紹 @ControllerAdvice 注解與 basePackages 屬性結(jié)合使用,用于定義全局異常處理和數(shù)據(jù)綁定的類。

48.2 注解屬性介紹

  • basePackages: 指定要掃描的包,這些包中的控制器將使用 @ControllerAdvice 類中定義的方法。

48.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

48.4 注解業(yè)務(wù)案例

@ControllerAdvice(basePackages = "com.example.web")
public class GlobalControllerAdvice {
    // 包含全局異常處理、屬性初始化和模型屬性的方法。
}

@SessionAttribute with name

49.1 注解作用介紹 @SessionAttribute 注解與 name 屬性結(jié)合使用,用于從HTTP會(huì)話中獲取屬性。

49.2 注解屬性介紹

  • name: 指定會(huì)話屬性的名稱。

49.3 請(qǐng)求參數(shù)案例

  • 例如,從會(huì)話中獲取名為"user"的屬性:
GET /user/profile
Cookie: JSESSIONID=abc123; user=John Doe

49.4 注解業(yè)務(wù)案例

@GetMapping("/user/profile")
public String showProfile(@SessionAttribute("user") String user) {
    // 使用會(huì)話中的"user"屬性展示用戶信息。
}

@RequestHeader

50.1 注解作用介紹 @RequestHeader 注解用于將特定的HTTP請(qǐng)求頭值綁定到控制器方法的參數(shù)上。

50.2 注解屬性介紹

  • value: 請(qǐng)求頭的名稱。
  • defaultValue: 當(dāng)請(qǐng)求頭不存在時(shí)使用的默認(rèn)值。

50.3 請(qǐng)求參數(shù)案例

  • 例如,獲取User-Agent請(qǐng)求頭的值:
GET /api/resource
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

50.4 注解業(yè)務(wù)案例

@GetMapping("/api/resource")
public ResponseEntity<?> handleRequest(@RequestHeader("User-Agent") String userAgent) {
    // 根據(jù)User-Agent處理請(qǐng)求。
}

@CookieValue

51.1 注解作用介紹 @CookieValue 注解用于將特定的Cookie值綁定到控制器方法的參數(shù)上。

51.2 注解屬性介紹

  • value: Cookie的名稱。
  • defaultValue: 當(dāng)Cookie不存在時(shí)使用的默認(rèn)值。

51.3 請(qǐng)求參數(shù)案例

  • 例如,獲取名為sessionId的Cookie的值:
GET /api/resource
Cookie: sessionId=abc123

51.4 注解業(yè)務(wù)案例

@GetMapping("/api/resource")
public ResponseEntity<?> handleRequest(@CookieValue("sessionId") String sessionId) {
    // 根據(jù)sessionId處理請(qǐng)求。
}

@MatrixVariable

52.1 注解作用介紹 @MatrixVariable 注解用于從URL的矩陣變量中提取值。

52.2 注解屬性介紹

  • pathVar: 指定矩陣變量所在的路徑變量。

52.3 請(qǐng)求參數(shù)案例

  • 例如,從/api/users;role=admin/123中提取role矩陣變量的值。

52.4 注解業(yè)務(wù)案例

@GetMapping("/api/users/{id}")
public ResponseEntity<?> handleRequest(@MatrixVariable(pathVar="id", name="role") String role) {
    // 根據(jù)用戶角色處理請(qǐng)求。
}

@PathVariable

53.1 注解作用介紹 @PathVariable 注解用于從URL路徑模板中提取變量值。

53.2 注解屬性介紹

  • value: 路徑變量的名稱。

53.3 請(qǐng)求參數(shù)案例

  • 例如,從/api/users/123中提取用戶ID:
GET /api/users/123

53.4 注解業(yè)務(wù)案例

@GetMapping("/api/users/{id}")
public ResponseEntity<?> handleRequest(@PathVariable int id) {
    // 根據(jù)用戶ID處理請(qǐng)求。
}

@ModelAttribute

54.1 注解作用介紹 @ModelAttribute 注解用于將提交的表單數(shù)據(jù)綁定到模型對(duì)象。

54.2 注解屬性介紹

  • value: 模型屬性的名稱。

54.3 請(qǐng)求參數(shù)案例

  • 例如,將表單數(shù)據(jù)綁定到User對(duì)象:
POST /api/users
Content-Type: application/x-www-form-urlencoded

name=John+Doe&email=john.doe@example.com

54.4 注解業(yè)務(wù)案例

@PostMapping("/api/users")
public ResponseEntity<?> addUser(@ModelAttribute User user) {
    // 使用綁定的User對(duì)象創(chuàng)建新用戶。
}

@RequestBody

55.1 注解作用介紹 @RequestBody 注解用于將請(qǐng)求體綁定到控制器方法的參數(shù)上。

55.2 注解屬性介紹

  • 無(wú)特定屬性。

55.3 請(qǐng)求參數(shù)案例

  • 例如,接收J(rèn)SON格式的請(qǐng)求體創(chuàng)建新用戶:
POST /api/users
Content-Type: application/json
{
  "name": "John Doe",
  "email": "john.doe@example.com"
}

55.4 注解業(yè)務(wù)案例

@PostMapping("/api/users")
public ResponseEntity<?> addUser(@RequestBody User user) {
    // 使用JSON請(qǐng)求體中的數(shù)據(jù)創(chuàng)建新用戶。
}

@ResponseBody

56.1 注解作用介紹 @ResponseBody 注解用于指示方法的返回值直接作為HTTP響應(yīng)正文返回。

56.2 注解屬性介紹

  • 無(wú)特定屬性。

56.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

56.4 注解業(yè)務(wù)案例

@GetMapping("/api/data")
@ResponseBody
public Data getData() {
    // 直接將返回的數(shù)據(jù)作為響應(yīng)正文。
}

@RestControllerAdvice

57.1 注解作用介紹 @RestControllerAdvice 是一個(gè)組合注解,它結(jié)合了 @ControllerAdvice@ResponseBody。用于全局異常處理和返回JSON格式的響應(yīng)。

57.2 注解屬性介紹

  • basePackages: 指定要掃描的包。
  • 無(wú)其他特定屬性。

57.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

57.4 注解業(yè)務(wù)案例

@RestControllerAdvice(basePackages = "com.example.controller")
public class GlobalRestExceptionHandler {
    // 處理控制器拋出的異常,并返回JSON格式的響應(yīng)。
}

@Component

58.1 注解作用介紹 @Component 是Spring的通用注解,用于標(biāo)識(shí)一個(gè)類為Spring組件,可以被自動(dòng)掃描和注冊(cè)為Spring應(yīng)用上下文的Bean。

58.2 注解屬性介紹

  • value: 指定組件的名稱。

58.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

58.4 注解業(yè)務(wù)案例

@Component("myComponent")
public class MyComponent {
    // 這個(gè)類會(huì)被Spring自動(dòng)注冊(cè)為一個(gè)Bean。
}

@Service

59.1 注解作用介紹 @Service 是Spring的注解,用于標(biāo)識(shí)一個(gè)類為服務(wù)層組件,通常包含業(yè)務(wù)邏輯。

59.2 注解屬性介紹

  • 無(wú)特定屬性。

59.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

59.4 注解業(yè)務(wù)案例

@Service
public class MyService {
    // 服務(wù)層組件,包含業(yè)務(wù)邏輯。
}

@Repository

60.1 注解作用介紹 @Repository 是Spring Data的注解,用于標(biāo)識(shí)一個(gè)類為數(shù)據(jù)訪問(wèn)對(duì)象,通常用于數(shù)據(jù)庫(kù)訪問(wèn)。

60.2 注解屬性介紹

  • 無(wú)特定屬性。

60.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

60.4 注解業(yè)務(wù)案例

@Repository
public interface MyRepository extends JpaRepository<User, Long> {
    // 定義數(shù)據(jù)訪問(wèn)方法。
}

@Autowired

61.1 注解作用介紹 @Autowired 是Spring的注解,用于自動(dòng)裝配依賴。

61.2 注解屬性介紹

  • required: 指定是否必須進(jìn)行自動(dòng)裝配,默認(rèn)為 true。
  • value: 指定要注入的Bean的名稱。

61.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

61.4 注解業(yè)務(wù)案例

@Component
public class MyComponent {
    @Autowired
    private MyService service;

    // MyService的實(shí)例將被自動(dòng)注入。
}

@Qualifier

62.1 注解作用介紹 @Qualifier 注解用于解決Spring容器中存在多個(gè)相同類型的Bean時(shí)的自動(dòng)裝配問(wèn)題。

62.2 注解屬性介紹

  • value: 指定要注入的Bean的名稱。

62.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

62.4 注解業(yè)務(wù)案例

@Component("serviceA")
public class MyServiceA {
    // ...
}

@Component("serviceB")
public class MyServiceB {
    // ...
}

@Component
public class MyComponent {
    @Autowired
    @Qualifier("serviceA")
    private MyService service;

    // MyServiceA的實(shí)例將被注入。
}

@Profile

63.1 注解作用介紹 @Profile 注解用于根據(jù)激活的配置文件激活或禁用Bean。

63.2 注解屬性介紹

  • value: 指定配置文件的名稱。

63.3 請(qǐng)求參數(shù)案例

  • 無(wú)特定請(qǐng)求參數(shù)。

63.4 注解業(yè)務(wù)案例

@Component
@Profile("dev")
public class DevConfig {
    // 僅在"dev"配置文件激活時(shí)使用。
}

@RequestMapping

64.1 注解作用介紹 @RequestMapping 注解用于映射Web請(qǐng)求到控制器的處理方法上,支持多種HTTP動(dòng)作。

64.2 注解屬性介紹

  • value: 請(qǐng)求的URL路徑。
  • method: 限定請(qǐng)求的動(dòng)作類型,如GET、POST等。
  • params: 根據(jù)請(qǐng)求參數(shù)的存在或不存在來(lái)決定是否匹配。
  • headers: 根據(jù)請(qǐng)求頭來(lái)決定是否匹配。

64.3 請(qǐng)求參數(shù)案例

  • 例如,映射GET請(qǐng)求到特定路徑,并根據(jù)請(qǐng)求參數(shù)進(jìn)行條件匹配:
GET /api/users?active=true

64.4 注解業(yè)務(wù)案例

@Controller
@RequestMapping("/api/users")
public class UserController {
    @RequestMapping(method = RequestMethod.GET, params = "active")
    public ResponseEntity<List<User>> getActiveUsers() {
        // 獲取激活狀態(tài)的用戶列表。
    }
}

@PathVariable

65.1 注解作用介紹 @PathVariable 注解用于從URL路徑模板中提取變量。

65.2 注解屬性介紹

  • valuename: 指定路徑變量的名稱。

65.3 請(qǐng)求參數(shù)案例

  • 例如,從/api/users/123路徑中提取用戶ID:
GET /api/users/123

65.4 注解業(yè)務(wù)案例

@GetMapping("/api/users/{id}")
public ResponseEntity<User> getUserById(@PathVariable int id) {
    // 根據(jù)路徑變量ID獲取用戶信息。
}

@RequestParam

66.1 注解作用介紹 @RequestParam 注解用于從請(qǐng)求的查詢字符串參數(shù)中綁定值。

66.2 注解屬性介紹

  • valuename: 請(qǐng)求參數(shù)的名稱。
  • required: 指示參數(shù)是否必須。
  • defaultValue: 當(dāng)參數(shù)不存在時(shí)使用的默認(rèn)值。

66.3 請(qǐng)求參數(shù)案例

  • 例如,從請(qǐng)求中獲取名為sort的查詢參數(shù):
GET /api/users?sort=asc

66.4 注解業(yè)務(wù)案例

@GetMapping("/api/users")
public ResponseEntity<List<User>> getUsersBySort(
    @RequestParam(name = "sort", defaultValue = "asc") String sort
) {
    // 根據(jù)查詢參數(shù)sort對(duì)用戶列表進(jìn)行排序。
}

@RequestPart

67.1 注解作用介紹 @RequestPart 注解用于處理multipart/form-data請(qǐng)求中的部分,如文件上傳。

67.2 注解屬性介紹

  • value: 請(qǐng)求部分的名稱。

67.3 請(qǐng)求參數(shù)案例

  • 例如,處理包含文件的multipart請(qǐng)求:
POST /api/upload
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="image.png"
Content-Type: image/png

[文件內(nèi)容]

------WebKitFormBoundary--

67.4 注解業(yè)務(wù)案例

@PostMapping("/api/upload")
public ResponseEntity<String> handleFileUpload(
    @RequestPart("file") MultipartFile file
) {
    // 處理上傳的文件。
}

@ModelAttribute

68.1 注解作用介紹 @ModelAttribute 注解用于將請(qǐng)求參數(shù)或表單數(shù)據(jù)綁定到模型對(duì)象。

68.2 注解屬性介紹

  • value: 模型屬性的名稱。

68.3 請(qǐng)求參數(shù)案例

  • 例如,將表單提交的數(shù)據(jù)綁定到用戶對(duì)象:
POST /api/users
Content-Type: application/x-www-form-urlencoded

name=John+Doe&email=john.doe@example.com

68.4 注解業(yè)務(wù)案例

@PostMapping("/api/users")
public ResponseEntity<User> createUserFromForm(
    @ModelAttribute User user
) {
    // 使用綁定的用戶對(duì)象創(chuàng)建新用戶。
}

@MatrixVariable

69.1 注解作用介紹 @MatrixVariable 注解用于從URL的矩陣變量中提取值。

69.2 注解屬性介紹

  • pathVar: 指定矩陣變量所在的路徑變量。

69.3 請(qǐng)求參數(shù)案例

  • 例如,從/api/users;role=admin/123中提取角色信息:
GET /api/users;role=admin/123

69.4 注解業(yè)務(wù)案例

@GetMapping("/api/users/{id}")
public ResponseEntity<User> getUserWithRole(
    @PathVariable int id,
    @MatrixVariable(pathVar = "id", name = "role") String role
) {
    // 根據(jù)用戶ID和角色信息獲取用戶。
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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