头图

image.png

Spring MVC框架的注解为Web开发提供了一种简洁而强大的声明式方法。从控制器的定义、请求映射、参数绑定到异常处理和响应构建,这些注解涵盖了Web应用程序开发的各个方面。它们不仅简化了编码工作,还增强了代码的清晰度和应用程序的可维护性。通过@Controller@RequestMapping@PathVariable@RequestParam@RequestBody等注解,Spring MVC使得处理复杂的Web请求变得容易,同时@Valid@Validated注解确保了数据的准确性。全局异常处理和响应状态管理通过@ExceptionHandler@ResponseStatus注解实现,而@ResponseBody@RestController注解则为RESTful服务提供了便利。这些注解的集合构成了Spring MVC的核心,使其成为开发灵活且功能丰富的Web应用程序的首选框架。

肖哥弹架构 跟大家“弹弹” Spring常用注解

历史热点文章

@Controller

1.1 注解作用介绍 @Controller 注解用于标识一个类为Spring MVC控制器,负责处理HTTP请求并返回视图。

1.2 注解属性介绍

  • 无特定属性。

1.3 请求参数案例

  • 无。

1.4 注解业务案例

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

@RestController

2.1 注解作用介绍 @RestController 注解是@Controller@ResponseBody的组合,用于RESTful Web服务的控制器。
2.2 注解属性介绍

  • 无特定属性。

2.3 请求参数案例

  • 无。

2.4 注解业务案例

java
@RestController
public class MyRestController {
    // 控制器中的方法将直接返回响应体。
}

@RequestMapping

3.1 注解作用介绍 @RequestMapping 注解用于将HTTP请求映射到控制器的处理方法上。

3.2 注解属性介绍

  • value: 请求的URL路径。
  • method: 支持的HTTP方法。
  • params: 请求参数条件。
  • headers: 请求头条件。

3.3 请求参数案例

  • 例如,当value设置为"/users/{id}"methodRequestMethod.GETparams"active=true"headers"Accept=application/json"时:

    GET /users/123?active=true
    Accept: application/json

    3.4 注解业务案例

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

    @GetMapping

    4.1 注解作用介绍 @GetMapping 注解用于映射GET请求到控制器的方法上。

4.2 注解属性介绍

  • value: 请求的URL路径。

4.3 请求参数案例

  • 例如,当value设置为"/users/{id}"时,请求/users/123将映射到方法:

    GET /users/123

    4.4 注解业务案例

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable int id) {
    // 根据路径变量{id}获取用户信息。
    }

    @PostMapping

    5.1 注解作用介绍 @PostMapping 注解用于映射POST请求到控制器的方法上。

5.2 注解属性介绍

  • value: 请求的URL路径。

5.3 请求参数案例

  • 例如,当value设置为"/users"时,带有JSON请求体的POST请求将映射到方法:

    POST /users
    Content-Type: application/json
    {
      "name": "John Doe",
      "age": 30
    }

    5.4 注解业务案例

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
    // 使用JSON请求体中的数据创建新用户。
    }

    @PutMapping

    6.1 注解作用介绍 @PutMapping 注解用于映射HTTP PUT请求到控制器的方法上,通常用于更新资源。

6.2 注解属性介绍

  • value: 请求的URL路径。

6.3 请求参数案例

  • 例如,当value设置为"/users/{id}"时,请求将映射到更新用户的方法:

    PUT /users/123
    Content-Type: application/json
    
    {
      "name": "Jane Doe",
      "age": 25
    }

    6.4 注解业务案例

    @PutMapping("/users/{id}")
    public User updateUser(@PathVariable int id, @RequestBody User userDetails) {
    // 使用请求体中的数据更新指定ID的用户信息。
    }

    @DeleteMapping

    7.1 注解作用介绍 @DeleteMapping 注解用于映射HTTP DELETE请求到控制器的方法上,用于删除资源。

7.2 注解属性介绍

  • value: 请求的URL路径。

7.3 请求参数案例

  • 例如,当value设置为"/users/{id}"时,请求将映射到删除用户的方法:

    DELETE /users/123

    7.4 注解业务案例

    @DeleteMapping("/users/{id}")
    public ResponseEntity<?> deleteUser(@PathVariable int id) {
    // 根据用户ID删除用户。
    }

    @PatchMapping

    8.1 注解作用介绍 @PatchMapping 注解用于映射HTTP PATCH请求到控制器的方法上,通常用于部分更新资源。

8.2 注解属性介绍

  • value: 请求的URL路径。

8.3 请求参数案例

  • 例如,当value设置为"/users/{id}"时,请求将映射到部分更新用户的方法:

    PATCH /users/123
    Content-Type: application/json
    
    {
      "name": "Jane Doe"
    }

    8.4 注解业务案例

    @PatchMapping("/users/{id}")
    public User patchUser(@PathVariable int id, @RequestBody Map<String, Object> updates) {
    // 使用请求体中的部分数据更新指定ID的用户信息。
    }

    @RequestParam

    9.1 注解作用介绍 @RequestParam 注解用于将请求参数绑定到控制器方法的参数上。

9.2 注解属性介绍

  • value: 请求参数的名称。
  • required: 指示参数是否必须。
  • defaultValue: 参数的默认值。

9.3 请求参数案例

  • 例如,当请求包含查询参数"page""size"时:

    GET /items?page=1&size=10

    9.4 注解业务案例

    @GetMapping("/items")
    public List<Item> listItems(
    @RequestParam(value = "page", defaultValue = "1") int page,
    @RequestParam(value = "size", defaultValue = "10") int size
    ) {
    // 根据请求的页码和大小返回项目列表。
    }

    @PathVariable

    10.1 注解作用介绍 @PathVariable 注解用于将URL中的模板变量绑定到控制器方法的参数上。

10.2 注解属性介绍

  • value: 模板变量的名称。
  • required: 指示变量是否必须。

10.3 请求参数案例

  • 例如,当URL模板包含"{id}"时,请求/users/123将映射到方法:

    GET /users/123

    10.4 注解业务案例

    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable int id) {
    // 根据URL路径变量{id}获取用户信息。
    }

    @RequestBody

    11.1 注解作用介绍 @RequestBody 注解用于将请求体绑定到控制器方法的参数上。

11.2 注解属性介绍

  • 无特定属性。

11.3 请求参数案例

  • 例如,POST请求包含JSON格式的请求体:

    POST /users
    Content-Type: application/json
    {
      "name": "John Doe",
      "age": 30
    }

    11.4 注解业务案例

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
    // 使用请求体中的数据创建新用户。
    }

    @RequestHeader

    12.1 注解作用介绍 @RequestHeader 注解用于将请求头绑定到控制器方法的参数上。

12.2 注解属性介绍

  • value: 请求头的名称。
  • required: 指示请求头是否必须。

12.3 请求参数案例

  • 例如,请求包含自定义请求头"X-Request-ID"

    GET /users
    X-Request-ID: 123456789

    12.4 注解业务案例

    @GetMapping("/users")
    public List<User> listUsers(@RequestHeader(value = "X-Request-ID", required = false) String requestId) {
    // 根据请求头"X-Request-ID"记录日志或进行追踪。
    }

    @CookieValue

    13.1 注解作用介绍 @CookieValue 注解用于将请求中Cookie的值绑定到控制器方法的参数上。

13.2 注解属性介绍

  • value: Cookie的名称。
  • required: 指示Cookie是否必须。

13.3 请求参数案例

  • 例如,请求包含名为"sessionId"的Cookie:

    GET /users
    Cookie: sessionId=abc123def456

    13.4 注解业务案例

    @GetMapping("/users")
    public List<User> listUsers(@CookieValue(value = "sessionId", required = false) String sessionId) {
    // 根据Cookie中的"sessionId"进行会话管理。
    }

    @ModelAttribute

    14.1 注解作用介绍 @ModelAttribute 注解用于将请求参数或表单数据绑定到模型属性上。

14.2 注解属性介绍

  • value: 模型属性的名称。
  • required: 指示模型属性是否必须。

14.3 请求参数案例

  • 例如,一个包含用户信息的POST请求:

    POST /users
    Content-Type: application/x-www-form-urlencoded
    
    name=John+Doe&age=30

    14.4 注解业务案例

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

    @SessionAttribute

    15.1 注解作用介绍 @SessionAttribute 注解用于将模型属性存储到HTTP会话中。

15.2 注解属性介绍

  • name: 会话属性的名称。
  • value: 会话属性的值。

15.3 请求参数案例

  • 例如,将用户信息存储在会话中,以便跨请求访问:

    GET /user/profile
    Cookie: JSESSIONID=abc123; user=John Doe

    15.4 注解业务案例

    @SessionAttribute(name = "user")
    public String showProfile(Model model) {
    String user = (String) model.asMap().get("user");
    // 从会话中获取用户信息。
    }

    @RequestAttribute

    16.1 注解作用介绍 @RequestAttribute 注解用于将请求属性绑定到控制器方法的参数上。

16.2 注解属性介绍

  • value: 请求属性的名称。

16.3 请求参数案例

  • 例如,从请求转发中携带属性:

    POST /login
    ...
    
    Redirect /user/profile?role=admin

    16.4 注解业务案例

    @GetMapping("/user/profile")
    public String showProfile(@RequestAttribute("role") String role) {
    // 根据请求属性"role"展示不同的用户信息。
    }

    @ResponseStatus

    17.1 注解作用介绍 @ResponseStatus 注解用于指定HTTP响应的status。

17.2 注解属性介绍

  • value: 指定的HTTP状态。

17.3 请求参数案例

  • 例如,当资源未找到时返回404状态:

    GET /users/999
    HTTP/1.1 404 Not Found

    17.4 注解业务案例

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

    @ExceptionHandler

    18.1 注解作用介绍 @ExceptionHandler 注解用于处理控制器中抛出的特定异常。

18.2 注解属性介绍

  • value: 指定异常的类型。

18.3 请求参数案例

  • 例如,捕获并处理自定义的业务异常:

    POST /users
    ...
    HTTP/1.1 400 Bad Request

    18.4 注解业务案例

    @ControllerAdvice
    public class GlobalExceptionHandler {
    @ExceptionHandler(BusinessException.class)
    public ResponseEntity<Object> handleBusinessException(BusinessException ex) {
        // 处理业务异常。
    }
    }

    @CrossOrigin

    19.1 注解作用介绍 @CrossOrigin 注解用于启用跨源请求。

19.2 注解属性介绍

  • origins: 允许的来源。
  • methods: 允许的HTTP方法。
  • allowedHeaders: 允许的请求头。

19.3 请求参数案例

  • 例如,允许特定域名进行跨域GET请求:

    OPTIONS /api/data
    Access-Control-Request-Method: GET
    Origin: http://example.com

    19.4 注解业务案例

    @CrossOrigin(origins = "http://example.com", methods = {RequestMethod.GET})
    @GetMapping("/api/data")
    public List<Data> getAllData() {
    // 返回数据列表,允许跨域GET请求。
    }

    @MatrixVariable

    20.1 注解作用介绍 @MatrixVariable 注解用于从URL的矩阵变量中获取值。

20.2 注解属性介绍

  • pathVar: 指定矩阵变量所在的路径变量名称。

20.3 请求参数案例

  • 例如,从URL中获取矩阵变量的值:

    GET /api/users/123;role=admin

    20.4 注解业务案例

    @GetMapping("/api/users/{id}")
    public User getUser(@MatrixVariable(name = "role", pathVar = "id") String role) {
    // 根据矩阵变量"role"获取用户角色。
    }

    @InitBinder

    21.1 注解作用介绍 @InitBinder 注解用于在控制器中初始化WebDataBinder,通常用于注册自定义属性编辑器。

21.2 注解属性介绍

  • 无特定属性。

21.3 请求参数案例

  • 无特定请求参数。

21.4 注解业务案例

@Controller
public class MyController {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 注册自定义属性编辑器。
    }
}

@ResponseStatus

22.1 注解作用介绍 @ResponseStatus 注解用于设置响应的HTTP状态码。

22.2 注解属性介绍

  • value: 指定的HTTP状态码。

22.3 请求参数案例

  • 例如,当发生特定异常时,返回HTTP 503 Service Unavailable状态码。

22.4 注解业务案例

@ResponseStatus(value = HttpStatus.SERVICE_UNAVAILABLE)
public class ServiceUnavailableException extends RuntimeException {
    // 自定义异常类。
}

@Validated

23.1 注解作用介绍 @Validated 注解用于在类或方法级别指定验证组,增强验证逻辑。

23.2 注解属性介绍

  • groups: 指定验证组。

23.3 请求参数案例

  • 例如,使用特定的验证组对用户注册信息进行验证。

23.4 注解业务案例

@Validated(UserValidationGroup.class)
public class UserRegistrationController {
    // 该控制器中的方法将使用UserValidationGroup验证组。
}

@Validated Annotation with Groups

24.1 注解作用介绍 @Validated 注解与groups属性结合使用,允许在方法级别指定多个验证组。

24.2 注解属性介绍

  • value: 指定的验证组数组。

24.3 请求参数案例

  • 例如,对更新操作使用不同的验证组。

24.4 注解业务案例

@Validated({UpdateGroup.class, AnotherUpdateGroup.class})
public void updateEntity(@Valid @NotNull MyEntity entity) {
    // 使用多个验证组对实体进行验证。
}

@RequestBodyAdvice

25.1 注解作用介绍 @RequestBodyAdvice 注解用于在读取请求正文之前或之后对请求正文进行处理。

25.2 注解属性介绍

  • beforeBodyRead: 指定在读取请求正文之前的处理。
  • afterBodyRead: 指定在读取请求正文之后的处理。

25.3 请求参数案例

  • 例如,对请求正文进行日志记录或修改。

25.4 注解业务案例

@ControllerAdvice
public class MyRequestBodyAdvice {
    @RequestBodyAdvice(beforeBodyRead = "logBeforeRead")
    public void logRequestBody() {
        // 在读取请求正文之前进行日志记录。
    }
}

@ControllerAdvice

26.1 注解作用介绍 @ControllerAdvice 注解用于定义一个类,该类可以包含多个@ExceptionHandler@InitBinder@ModelAttribute方法。

26.2 注解属性介绍

  • basePackages: 指定要扫描的包。

26.3 请求参数案例

  • 无特定请求参数。

26.4 注解业务案例

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

@MatrixParam

27.1 注解作用介绍 @MatrixParam 注解用于从URL的矩阵变量中获取值。

27.2 注解属性介绍

  • name: 矩阵变量的名称。

27.3 请求参数案例

  • 例如,从URL中获取矩阵变量的值:

    GET /users;role=admin/123

    27.4 注解业务案例

    @GetMapping("/users/{id}")
    public User getUser(@MatrixParam(name = "role") String role) {
    // 根据矩阵变量"role"获取用户角色。
    }

    @SessionAttributes

    28.1 注解作用介绍 @SessionAttributes 注解用于将模型属性添加到HTTP会话中,以便在多个请求之间保持它们的值。

28.2 注解属性介绍

  • names: 要存储在会话中的属性名称数组。
  • types: 要存储在会话中的属性类型。

28.3 请求参数案例

  • 例如,将用户信息存储在会话中,以便在用户会话期间保持状态:

    GET /user/profile
    Cookie: JSESSIONID=abc123; user=John Doe

    28.4 注解业务案例

    @Controller
    @SessionAttributes("user")
    public class UserController {
    // 这个控制器中的模型属性"user"将被存储在会话中。
    }

    @RequestAttribute

    29.1 注解作用介绍 @RequestAttribute 注解用于将请求属性绑定到控制器方法的参数上。

29.2 注解属性介绍

  • value: 请求属性的名称。

29.3 请求参数案例

  • 例如,从请求中获取属性"searchQuery":

    GET /search?searchQuery=spring

    29.4 注解业务案例

    @GetMapping("/search")
    public String search(@RequestAttribute("searchQuery") String query) {
    // 使用请求属性"searchQuery"执行搜索。
    }

    @ModelAttribute

    30.1 注解作用介绍 @ModelAttribute 注解用于将请求参数或会话属性绑定到模型对象上。

30.2 注解属性介绍

  • value: 模型对象的名称。

30.3 请求参数案例

  • 例如,将表单提交的参数绑定到用户对象上:

    POST /user/register
    Content-Type: application/x-www-form-urlencoded
    
    name=John+Doe&email=john.doe@example.com

    30.4 注解业务案例

    @PostMapping("/user/register")
    public String registerUser(@ModelAttribute("user") User user) {
    // 使用模型中的"user"对象注册新用户。
    }

    @CookieValue

    31.1 注解作用介绍 @CookieValue 注解用于将请求中的Cookie值绑定到控制器方法的参数上。

31.2 注解属性介绍

  • value: Cookie的名称。

31.3 请求参数案例

  • 例如,从请求中获取名为"sessionId"的Cookie值:

    GET /user/profile
    Cookie: sessionId=abc123

    31.4 注解业务案例

    @GetMapping("/user/profile")
    public String showProfile(@CookieValue("sessionId") String sessionId) {
    // 使用Cookie中的"sessionId"进行会话管理。
    }

    @RequestBody

    32.1 注解作用介绍 @RequestBody 注解用于将请求正文绑定到控制器方法的参数上。

32.2 注解属性介绍

  • 无特定属性。

32.3 请求参数案例

  • 例如,接收JSON格式的请求正文:

    POST /api/data
    Content-Type: application/json
    
    {
      "key": "value"
    }

    32.4 注解业务案例

    @PostMapping("/api/data")
    public DataItem createDataItem(@RequestBody DataItem data) {
    // 使用请求正文中的数据创建新的数据项。
    }

    @ResponseBody

    33.1 注解作用介绍 @ResponseBody 注解用于指示方法的返回值直接作为HTTP响应正文返回。

33.2 注解属性介绍

  • 无特定属性。

33.3 请求参数案例

  • 例如,返回JSON格式的响应正文:

    GET /api/data/1
    Content-Type: application/json
    
    {
      "id": 1,
      "key": "value"
    }

    33.4 注解业务案例

    @GetMapping("/api/data/{id}")
    @ResponseBody
    public DataItem getDataItem(@PathVariable int id) {
    // 直接将数据项作为JSON响应正文返回。
    }

    @ResponseStatus

    34.1 注解作用介绍 @ResponseStatus 注解用于设置响应的HTTP状态码。

34.2 注解属性介绍

  • value: 指定的HTTP状态码。

34.3 请求参数案例

  • 无特定请求参数。

34.4 注解业务案例

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
    // 自定义异常,用于当资源未找到时。
}

@ExceptionHandler

35.1 注解作用介绍 @ExceptionHandler 注解用于处理控制器抛出的特定异常。

35.2 注解属性介绍

  • value: 指定异常的类型。

35.3 请求参数案例

  • 无特定请求参数。

35.4 注解业务案例

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

@ControllerAdvice

36.1 注解作用介绍 @ControllerAdvice 注解用于定义一个类,该类可以包含多个@ExceptionHandler@InitBinder@ModelAttribute方法,用于全局异常处理和数据绑定。

36.2 注解属性介绍

  • basePackages: 指定要扫描的包。

36.3 请求参数案例

  • 无特定请求参数。

36.4 注解业务案例

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

@MatrixVariable

37.1 注解作用介绍 @MatrixVariable 注解用于从URL的矩阵变量中获取值。

37.2 注解属性介绍

  • pathVar: 指定矩阵变量所在的路径变量名称。

37.3 请求参数案例

  • 例如,从URL中获取矩阵变量的值:
GET /users;role=admin/123

37.4 注解业务案例

@GetMapping("/users/{id}")
public User getUser(@MatrixVariable(name = "role", pathVar = "id") String role) {
    // 根据矩阵变量"role"获取用户角色。
}

@CrossOrigin

38.1 注解作用介绍 @CrossOrigin 注解用于启用跨源请求。

38.2 注解属性介绍

  • origins: 允许的来源。
  • methods: 允许的HTTP方法。
  • allowedHeaders: 允许的请求头。

38.3 请求参数案例

  • 例如,允许特定域名进行跨域GET请求:

    OPTIONS /api/data
    Access-Control-Request-Method: GET
    Origin: http://example.com

    38.4 注解业务案例

    @CrossOrigin(origins = "http://example.com", methods = {RequestMethod.GET})
    @GetMapping("/api/data")
    public List<Data> getAllData() {
    // 返回数据列表,允许跨域GET请求。
    }

    @PostMapping

    39.1 注解作用介绍 @PostMapping 注解用于映射HTTP POST请求到控制器的方法上。

39.2 注解属性介绍

  • value: 请求的URL路径。
  • consumes: 指定请求体的媒体类型。

39.3 请求参数案例

  • 例如,发送POST请求创建新用户:

    POST /users
    Content-Type: application/json
    
    {
      "name": "John Doe",
      "email": "john.doe@example.com"
    }

    39.4 注解业务案例

    @PostMapping("/users")
    public ResponseEntity<User> createUser(@RequestBody User user) {
    // 使用请求体中的数据创建新用户。
    }

    @GetMapping

    40.1 注解作用介绍 @GetMapping 注解用于映射HTTP GET请求到控制器的方法上。

40.2 注解属性介绍

  • value: 请求的URL路径。

40.3 请求参数案例

  • 例如,发送GET请求获取用户列表:

    GET /users

    40.4 注解业务案例

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

    @PutMapping

    41.1 注解作用介绍 @PutMapping 注解用于映射HTTP PUT请求到控制器的方法上,通常用于更新资源。

41.2 注解属性介绍

  • value: 请求的URL路径。
  • consumes: 指定请求体的媒体类型。

41.3 请求参数案例

  • 例如,发送PUT请求更新用户信息:

    PUT /users/1
    Content-Type: application/json
    
    {
      "name": "Jane Doe",
      "email": "jane.doe@example.com"
    }

    41.4 注解业务案例

    @PutMapping("/users/{id}")
    public ResponseEntity<User> updateUser(@PathVariable int id, @RequestBody User userDetails) {
    // 使用请求体中的数据更新指定ID的用户信息。
    }

    @DeleteMapping

    42.1 注解作用介绍 @DeleteMapping 注解用于映射HTTP DELETE请求到控制器的方法上,用于删除资源。

42.2 注解属性介绍

  • value: 请求的URL路径。

42.3 请求参数案例

  • 例如,发送DELETE请求删除用户:

    DELETE /users/1

    42.4 注解业务案例

    @DeleteMapping("/users/{id}")
    public ResponseEntity<?> deleteUser(@PathVariable int id) {
    // 根据用户ID删除用户。
    }

    @PatchMapping

    43.1 注解作用介绍 @PatchMapping 注解用于映射HTTP PATCH请求到控制器的方法上,通常用于部分更新资源。

43.2 注解属性介绍

  • value: 请求的URL路径。
  • consumes: 指定请求体的媒体类型。

43.3 请求参数案例

  • 例如,发送PATCH请求部分更新用户信息:

    PATCH /users/1
    Content-Type: application/json
    
    {
      "name": "Jane Doe"
    }

    43.4 注解业务案例

    @PatchMapping("/users/{id}")
    public ResponseEntity<User> patchUser(@PathVariable int id, @RequestBody Map<String, Object> updates) {
    // 使用请求体中的部分数据更新指定ID的用户信息。
    }

    @RequestMapping

    44.1 注解作用介绍 @RequestMapping 注解是一个通用的请求映射注解,可以用于映射不同类型的HTTP请求到控制器的处理方法。

44.2 注解属性介绍

  • value: 请求的URL路径。
  • method: 支持的HTTP方法。
  • params: 根据请求参数的存在或不存在来决定是否匹配。
  • headers: 根据请求头来决定是否匹配。

44.3 请求参数案例

  • 例如,映射满足特定请求参数和头条件的GET请求:

    GET /users?active=true
    Accept: application/json

    44.4 注解业务案例

    @RequestMapping(value = "/users", method = RequestMethod.GET, params = "active", headers = "Accept=application/json")
    public List<User> getActiveUsers() {
    // 根据请求参数和头信息获取激活用户列表。
    }

    @PostMapping with consumes Attribute

    45.1 注解作用介绍 @PostMapping 注解与 consumes 属性结合使用,用于指定请求体的媒体类型。

45.2 注解属性介绍

  • consumes: 指定请求体的媒体类型,如 application/json

45.3 请求参数案例

  • 例如,发送POST请求创建新用户,请求体为JSON格式:

    POST /users
    Content-Type: application/json
    
    {
      "name": "John Doe",
      "email": "john.doe@example.com"
    }

    45.4 注解业务案例

    @PostMapping(value = "/users", consumes = "application/json")
    public ResponseEntity<User> createUser(@RequestBody User user) {
    // 使用JSON请求体中的数据创建新用户。
    }

    @GetMapping with produces Attribute

    46.1 注解作用介绍 @GetMapping 注解与 produces 属性结合使用,用于指定响应的媒体类型。

46.2 注解属性介绍

  • produces: 指定响应的媒体类型,如 application/json

46.3 请求参数案例

  • 例如,发送GET请求获取用户列表,期望响应为JSON格式:

    GET /users
    Accept: application/json

    46.4 注解业务案例

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

    @ExceptionHandler with responseBody Attribute

    47.1 注解作用介绍 @ExceptionHandler 注解与 responseBody 属性结合使用,用于返回异常信息。

47.2 注解属性介绍

  • responseBody: 指定异常处理方法的返回值是否作为响应正文。

47.3 请求参数案例

  • 例如,处理资源未找到的异常,并返回JSON格式的错误信息:

    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 注解业务案例

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

    @ControllerAdvice with basePackages

    48.1 注解作用介绍 @ControllerAdvice 注解与 basePackages 属性结合使用,用于定义全局异常处理和数据绑定的类。

48.2 注解属性介绍

  • basePackages: 指定要扫描的包,这些包中的控制器将使用 @ControllerAdvice 类中定义的方法。

48.3 请求参数案例

  • 无特定请求参数。

48.4 注解业务案例

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

@SessionAttribute with name

49.1 注解作用介绍 @SessionAttribute 注解与 name 属性结合使用,用于从HTTP会话中获取属性。

49.2 注解属性介绍

  • name: 指定会话属性的名称。

49.3 请求参数案例

  • 例如,从会话中获取名为"user"的属性:

    GET /user/profile
    Cookie: JSESSIONID=abc123; user=John Doe

    49.4 注解业务案例

    @GetMapping("/user/profile")
    public String showProfile(@SessionAttribute("user") String user) {
    // 使用会话中的"user"属性展示用户信息。
    }

    @RequestHeader

    50.1 注解作用介绍 @RequestHeader 注解用于将特定的HTTP请求头值绑定到控制器方法的参数上。

50.2 注解属性介绍

  • value: 请求头的名称。
  • defaultValue: 当请求头不存在时使用的默认值。

50.3 请求参数案例

  • 例如,获取User-Agent请求头的值:

    GET /api/resource
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

    50.4 注解业务案例

    @GetMapping("/api/resource")
    public ResponseEntity<?> handleRequest(@RequestHeader("User-Agent") String userAgent) {
    // 根据User-Agent处理请求。
    }

    @CookieValue

    51.1 注解作用介绍 @CookieValue 注解用于将特定的Cookie值绑定到控制器方法的参数上。

51.2 注解属性介绍

  • value: Cookie的名称。
  • defaultValue: 当Cookie不存在时使用的默认值。

51.3 请求参数案例

  • 例如,获取名为sessionId的Cookie的值:

    GET /api/resource
    Cookie: sessionId=abc123

    51.4 注解业务案例

    @GetMapping("/api/resource")
    public ResponseEntity<?> handleRequest(@CookieValue("sessionId") String sessionId) {
    // 根据sessionId处理请求。
    }

    @MatrixVariable

    52.1 注解作用介绍 @MatrixVariable 注解用于从URL的矩阵变量中提取值。

52.2 注解属性介绍

  • pathVar: 指定矩阵变量所在的路径变量。

52.3 请求参数案例

  • 例如,从/api/users;role=admin/123中提取role矩阵变量的值。

52.4 注解业务案例

@GetMapping("/api/users/{id}")
public ResponseEntity<?> handleRequest(@MatrixVariable(pathVar="id", name="role") String role) {
    // 根据用户角色处理请求。
}

@PathVariable

53.1 注解作用介绍 @PathVariable 注解用于从URL路径模板中提取变量值。

53.2 注解属性介绍

  • value: 路径变量的名称。

53.3 请求参数案例

  • 例如,从/api/users/123中提取用户ID:

    GET /api/users/123

    53.4 注解业务案例

    @GetMapping("/api/users/{id}")
    public ResponseEntity<?> handleRequest(@PathVariable int id) {
    // 根据用户ID处理请求。
    }

    @ModelAttribute

    54.1 注解作用介绍 @ModelAttribute 注解用于将提交的表单数据绑定到模型对象。

54.2 注解属性介绍

  • value: 模型属性的名称。

54.3 请求参数案例

  • 例如,将表单数据绑定到User对象:

    POST /api/users
    Content-Type: application/x-www-form-urlencoded
    
    name=John+Doe&email=john.doe@example.com

    54.4 注解业务案例

    @PostMapping("/api/users")
    public ResponseEntity<?> addUser(@ModelAttribute User user) {
    // 使用绑定的User对象创建新用户。
    }

    @RequestBody

    55.1 注解作用介绍 @RequestBody 注解用于将请求体绑定到控制器方法的参数上。

55.2 注解属性介绍

  • 无特定属性。

55.3 请求参数案例

  • 例如,接收JSON格式的请求体创建新用户:

    POST /api/users
    Content-Type: application/json
    {
      "name": "John Doe",
      "email": "john.doe@example.com"
    }

    55.4 注解业务案例

    @PostMapping("/api/users")
    public ResponseEntity<?> addUser(@RequestBody User user) {
    // 使用JSON请求体中的数据创建新用户。
    }

    @ResponseBody

    56.1 注解作用介绍 @ResponseBody 注解用于指示方法的返回值直接作为HTTP响应正文返回。

56.2 注解属性介绍

  • 无特定属性。

56.3 请求参数案例

  • 无特定请求参数。

56.4 注解业务案例

@GetMapping("/api/data")
@ResponseBody
public Data getData() {
    // 直接将返回的数据作为响应正文。
}

@RestControllerAdvice

57.1 注解作用介绍 @RestControllerAdvice 是一个组合注解,它结合了 @ControllerAdvice@ResponseBody。用于全局异常处理和返回JSON格式的响应。

57.2 注解属性介绍

  • basePackages: 指定要扫描的包。
  • 无其他特定属性。

57.3 请求参数案例

  • 无特定请求参数。

57.4 注解业务案例

@RestControllerAdvice(basePackages = "com.example.controller")
public class GlobalRestExceptionHandler {
    // 处理控制器抛出的异常,并返回JSON格式的响应。
}

@Component

58.1 注解作用介绍 @Component 是Spring的通用注解,用于标识一个类为Spring组件,可以被自动扫描和注册为Spring应用上下文的Bean。

58.2 注解属性介绍

  • value: 指定组件的名称。

58.3 请求参数案例

  • 无特定请求参数。

58.4 注解业务案例

@Component("myComponent")
public class MyComponent {
    // 这个类会被Spring自动注册为一个Bean。
}

@Service

59.1 注解作用介绍 @Service 是Spring的注解,用于标识一个类为服务层组件,通常包含业务逻辑。

59.2 注解属性介绍

  • 无特定属性。

59.3 请求参数案例

  • 无特定请求参数。

59.4 注解业务案例

@Service
public class MyService {
    // 服务层组件,包含业务逻辑。
}

@Repository

60.1 注解作用介绍 @Repository 是Spring Data的注解,用于标识一个类为数据访问对象,通常用于数据库访问。

60.2 注解属性介绍

  • 无特定属性。

60.3 请求参数案例

  • 无特定请求参数。

60.4 注解业务案例

@Repository
public interface MyRepository extends JpaRepository<User, Long> {
    // 定义数据访问方法。
}

@Autowired

61.1 注解作用介绍 @Autowired 是Spring的注解,用于自动装配依赖。

61.2 注解属性介绍

  • required: 指定是否必须进行自动装配,默认为 true
  • value: 指定要注入的Bean的名称。

61.3 请求参数案例

  • 无特定请求参数。

61.4 注解业务案例

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

    // MyService的实例将被自动注入。
}

@Qualifier

62.1 注解作用介绍 @Qualifier 注解用于解决Spring容器中存在多个相同类型的Bean时的自动装配问题。

62.2 注解属性介绍

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

62.3 请求参数案例

  • 无特定请求参数。

62.4 注解业务案例

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

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

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

    // MyServiceA的实例将被注入。
}

@Profile

63.1 注解作用介绍 @Profile 注解用于根据激活的配置文件激活或禁用Bean。

63.2 注解属性介绍

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

63.3 请求参数案例

  • 无特定请求参数。

63.4 注解业务案例

@Component
@Profile("dev")
public class DevConfig {
    // 仅在"dev"配置文件激活时使用。
}

@RequestMapping

64.1 注解作用介绍 @RequestMapping 注解用于映射Web请求到控制器的处理方法上,支持多种HTTP动作。

64.2 注解属性介绍

  • value: 请求的URL路径。
  • method: 限定请求的动作类型,如GET、POST等。
  • params: 根据请求参数的存在或不存在来决定是否匹配。
  • headers: 根据请求头来决定是否匹配。

64.3 请求参数案例

  • 例如,映射GET请求到特定路径,并根据请求参数进行条件匹配:

    GET /api/users?active=true

    64.4 注解业务案例

    @Controller
    @RequestMapping("/api/users")
    public class UserController {
    @RequestMapping(method = RequestMethod.GET, params = "active")
    public ResponseEntity<List<User>> getActiveUsers() {
        // 获取激活状态的用户列表。
    }
    }

    @PathVariable

    65.1 注解作用介绍 @PathVariable 注解用于从URL路径模板中提取变量。

65.2 注解属性介绍

  • value 或 name: 指定路径变量的名称。

65.3 请求参数案例

  • 例如,从/api/users/123路径中提取用户ID:

    GET /api/users/123

    65.4 注解业务案例

    @GetMapping("/api/users/{id}")
    public ResponseEntity<User> getUserById(@PathVariable int id) {
    // 根据路径变量ID获取用户信息。
    }

    @RequestParam

    66.1 注解作用介绍 @RequestParam 注解用于从请求的查询字符串参数中绑定值。

66.2 注解属性介绍

  • value 或 name: 请求参数的名称。
  • required: 指示参数是否必须。
  • defaultValue: 当参数不存在时使用的默认值。

66.3 请求参数案例

  • 例如,从请求中获取名为sort的查询参数:

    GET /api/users?sort=asc

    66.4 注解业务案例

    @GetMapping("/api/users")
    public ResponseEntity<List<User>> getUsersBySort(
    @RequestParam(name = "sort", defaultValue = "asc") String sort
    ) {
    // 根据查询参数sort对用户列表进行排序。
    }

    @RequestPart

    67.1 注解作用介绍 @RequestPart 注解用于处理multipart/form-data请求中的部分,如文件上传。

67.2 注解属性介绍

  • value: 请求部分的名称。

67.3 请求参数案例

  • 例如,处理包含文件的multipart请求:

    POST /api/upload
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
    
    ------WebKitFormBoundary
    Content-Disposition: form-data; name="file"; filename="image.png"
    Content-Type: image/png
    
    [文件内容]
    
    ------WebKitFormBoundary--

    67.4 注解业务案例

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

    @ModelAttribute

    68.1 注解作用介绍 @ModelAttribute 注解用于将请求参数或表单数据绑定到模型对象。

68.2 注解属性介绍

  • value: 模型属性的名称。

68.3 请求参数案例

  • 例如,将表单提交的数据绑定到用户对象:

    POST /api/users
    Content-Type: application/x-www-form-urlencoded
    
    name=John+Doe&email=john.doe@example.com

    68.4 注解业务案例

    @PostMapping("/api/users")
    public ResponseEntity<User> createUserFromForm(
    @ModelAttribute User user
    ) {
    // 使用绑定的用户对象创建新用户。
    }

    @MatrixVariable

    69.1 注解作用介绍 @MatrixVariable 注解用于从URL的矩阵变量中提取值。

69.2 注解属性介绍

  • pathVar: 指定矩阵变量所在的路径变量。

69.3 请求参数案例

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

    GET /api/users;role=admin/123

    69.4 注解业务案例

    @GetMapping("/api/users/{id}")
    public ResponseEntity<User> getUserWithRole(
    @PathVariable int id,
    @MatrixVariable(pathVar = "id", name = "role") String role
    ) {
    // 根据用户ID和角色信息获取用户。
    }

肖哥弹架构
1 声望0 粉丝

Solomon(肖爱良) ,花名:肖哥弹架构