69 个 Spring mvc 全部注解:真实业务使用案例说明 (必须收藏)
Spring MVC 框架的注解为 Web 开发提供了一种简洁而强大的声明式方法。从控制器的定义、请求映射、参数绑定到异常处理和响应构建,这些注解涵盖了 Web 应用程序开发的各个方面。它们不仅简化了编码工作,还增强了代码的清晰度和应用程序的可维护性。通过@Controller
、@RequestMapping
、@PathVariable
、@RequestParam
、@RequestBody
等注解,Spring MVC 使得处理复杂的 Web 请求变得容易,同时@Valid
和@Validated
注解确保了数据的准确性。全局异常处理和响应状态管理通过@ExceptionHandler
和@ResponseStatus
注解实现,而@ResponseBody
和@RestController
注解则为 RESTful 服务提供了便利。这些注解的集合构成了 Spring MVC 的核心,使其成为开发灵活且功能丰富的 Web 应用程序的首选框架。
肖哥弹架构 跟大家“弹弹” Spring 常用注解,需要代码关注
欢迎 点赞,关注,评论。
公 Solomon 肖哥弹架构获取更多精彩内容
历史热点文章
@Controller
1.1 注解作用介绍 @Controller
注解用于标识一个类为 Spring MVC 控制器,负责处理 HTTP 请求并返回视图。
1.2 注解属性介绍
无特定属性。
1.3 请求参数案例
无。
1.4 注解业务案例
@RestController
2.1 注解作用介绍 @RestController
注解是@Controller
和@ResponseBody
的组合,用于 RESTful Web 服务的控制器。2.2 注解属性介绍
无特定属性。
2.3 请求参数案例
无。
2.4 注解业务案例
@RequestMapping
3.1 注解作用介绍 @RequestMapping
注解用于将 HTTP 请求映射到控制器的处理方法上。
3.2 注解属性介绍
value: 请求的 URL 路径。
method: 支持的 HTTP 方法。
params: 请求参数条件。
headers: 请求头条件。
3.3 请求参数案例
例如,当
value
设置为"/users/{id}"
,method
为RequestMethod.GET
,params
为"active=true"
,headers
为"Accept=application/json"
时:
3.4 注解业务案例
@GetMapping
4.1 注解作用介绍 @GetMapping
注解用于映射 GET 请求到控制器的方法上。
4.2 注解属性介绍
value: 请求的 URL 路径。
4.3 请求参数案例
例如,当
value
设置为"/users/{id}"
时,请求/users/123
将映射到方法:
4.4 注解业务案例
@PostMapping
5.1 注解作用介绍 @PostMapping
注解用于映射 POST 请求到控制器的方法上。
5.2 注解属性介绍
value: 请求的 URL 路径。
5.3 请求参数案例
例如,当
value
设置为"/users"
时,带有 JSON 请求体的 POST 请求将映射到方法:
5.4 注解业务案例
@PutMapping
6.1 注解作用介绍 @PutMapping
注解用于映射 HTTP PUT 请求到控制器的方法上,通常用于更新资源。
6.2 注解属性介绍
value: 请求的 URL 路径。
6.3 请求参数案例
例如,当
value
设置为"/users/{id}"
时,请求将映射到更新用户的方法:
6.4 注解业务案例
@DeleteMapping
7.1 注解作用介绍 @DeleteMapping
注解用于映射 HTTP DELETE 请求到控制器的方法上,用于删除资源。
7.2 注解属性介绍
value: 请求的 URL 路径。
7.3 请求参数案例
例如,当
value
设置为"/users/{id}"
时,请求将映射到删除用户的方法:
7.4 注解业务案例
@PatchMapping
8.1 注解作用介绍 @PatchMapping
注解用于映射 HTTP PATCH 请求到控制器的方法上,通常用于部分更新资源。
8.2 注解属性介绍
value: 请求的 URL 路径。
8.3 请求参数案例
例如,当
value
设置为"/users/{id}"
时,请求将映射到部分更新用户的方法:
8.4 注解业务案例
@RequestParam
9.1 注解作用介绍 @RequestParam
注解用于将请求参数绑定到控制器方法的参数上。
9.2 注解属性介绍
value: 请求参数的名称。
required: 指示参数是否必须。
defaultValue: 参数的默认值。
9.3 请求参数案例
例如,当请求包含查询参数
"page"
和"size"
时:
9.4 注解业务案例
@PathVariable
10.1 注解作用介绍 @PathVariable
注解用于将 URL 中的模板变量绑定到控制器方法的参数上。
10.2 注解属性介绍
value: 模板变量的名称。
required: 指示变量是否必须。
10.3 请求参数案例
例如,当 URL 模板包含
"{id}"
时,请求/users/123
将映射到方法:
10.4 注解业务案例
@RequestBody
11.1 注解作用介绍 @RequestBody
注解用于将请求体绑定到控制器方法的参数上。
11.2 注解属性介绍
无特定属性。
11.3 请求参数案例
例如,POST 请求包含 JSON 格式的请求体:
11.4 注解业务案例
@RequestHeader
12.1 注解作用介绍 @RequestHeader
注解用于将请求头绑定到控制器方法的参数上。
12.2 注解属性介绍
value: 请求头的名称。
required: 指示请求头是否必须。
12.3 请求参数案例
例如,请求包含自定义请求头
"X-Request-ID"
:
12.4 注解业务案例
@CookieValue
13.1 注解作用介绍 @CookieValue
注解用于将请求中 Cookie 的值绑定到控制器方法的参数上。
13.2 注解属性介绍
value: Cookie 的名称。
required: 指示 Cookie 是否必须。
13.3 请求参数案例
例如,请求包含名为
"sessionId"
的 Cookie:
13.4 注解业务案例
@ModelAttribute
14.1 注解作用介绍 @ModelAttribute
注解用于将请求参数或表单数据绑定到模型属性上。
14.2 注解属性介绍
value: 模型属性的名称。
required: 指示模型属性是否必须。
14.3 请求参数案例
例如,一个包含用户信息的 POST 请求:
14.4 注解业务案例
@SessionAttribute
15.1 注解作用介绍 @SessionAttribute
注解用于将模型属性存储到 HTTP 会话中。
15.2 注解属性介绍
name: 会话属性的名称。
value: 会话属性的值。
15.3 请求参数案例
例如,将用户信息存储在会话中,以便跨请求访问:
15.4 注解业务案例
@RequestAttribute
16.1 注解作用介绍 @RequestAttribute
注解用于将请求属性绑定到控制器方法的参数上。
16.2 注解属性介绍
value: 请求属性的名称。
16.3 请求参数案例
例如,从请求转发中携带属性:
16.4 注解业务案例
@ResponseStatus
17.1 注解作用介绍 @ResponseStatus
注解用于指定 HTTP 响应的 status。
17.2 注解属性介绍
value: 指定的 HTTP 状态。
17.3 请求参数案例
例如,当资源未找到时返回 404 状态:
17.4 注解业务案例
@ExceptionHandler
18.1 注解作用介绍 @ExceptionHandler
注解用于处理控制器中抛出的特定异常。
18.2 注解属性介绍
value: 指定异常的类型。
18.3 请求参数案例
例如,捕获并处理自定义的业务异常:
18.4 注解业务案例
@CrossOrigin
19.1 注解作用介绍 @CrossOrigin
注解用于启用跨源请求。
19.2 注解属性介绍
origins: 允许的来源。
methods: 允许的 HTTP 方法。
allowedHeaders: 允许的请求头。
19.3 请求参数案例
例如,允许特定域名进行跨域 GET 请求:
19.4 注解业务案例
@MatrixVariable
20.1 注解作用介绍 @MatrixVariable
注解用于从 URL 的矩阵变量中获取值。
20.2 注解属性介绍
pathVar: 指定矩阵变量所在的路径变量名称。
20.3 请求参数案例
例如,从 URL 中获取矩阵变量的值:
20.4 注解业务案例
@InitBinder
21.1 注解作用介绍 @InitBinder
注解用于在控制器中初始化 WebDataBinder,通常用于注册自定义属性编辑器。
21.2 注解属性介绍
无特定属性。
21.3 请求参数案例
无特定请求参数。
21.4 注解业务案例
@ResponseStatus
22.1 注解作用介绍 @ResponseStatus
注解用于设置响应的 HTTP 状态码。
22.2 注解属性介绍
value: 指定的 HTTP 状态码。
22.3 请求参数案例
例如,当发生特定异常时,返回 HTTP 503 Service Unavailable 状态码。
22.4 注解业务案例
@Validated
23.1 注解作用介绍 @Validated
注解用于在类或方法级别指定验证组,增强验证逻辑。
23.2 注解属性介绍
groups: 指定验证组。
23.3 请求参数案例
例如,使用特定的验证组对用户注册信息进行验证。
23.4 注解业务案例
@Validated Annotation with Groups
24.1 注解作用介绍 @Validated
注解与groups
属性结合使用,允许在方法级别指定多个验证组。
24.2 注解属性介绍
value: 指定的验证组数组。
24.3 请求参数案例
例如,对更新操作使用不同的验证组。
24.4 注解业务案例
@RequestBodyAdvice
25.1 注解作用介绍 @RequestBodyAdvice
注解用于在读取请求正文之前或之后对请求正文进行处理。
25.2 注解属性介绍
beforeBodyRead: 指定在读取请求正文之前的处理。
afterBodyRead: 指定在读取请求正文之后的处理。
25.3 请求参数案例
例如,对请求正文进行日志记录或修改。
25.4 注解业务案例
@ControllerAdvice
26.1 注解作用介绍 @ControllerAdvice
注解用于定义一个类,该类可以包含多个@ExceptionHandler
、@InitBinder
和@ModelAttribute
方法。
26.2 注解属性介绍
basePackages: 指定要扫描的包。
26.3 请求参数案例
无特定请求参数。
26.4 注解业务案例
@MatrixParam
27.1 注解作用介绍 @MatrixParam
注解用于从 URL 的矩阵变量中获取值。
27.2 注解属性介绍
name: 矩阵变量的名称。
27.3 请求参数案例
例如,从 URL 中获取矩阵变量的值:
27.4 注解业务案例
@SessionAttributes
28.1 注解作用介绍 @SessionAttributes
注解用于将模型属性添加到 HTTP 会话中,以便在多个请求之间保持它们的值。
28.2 注解属性介绍
names: 要存储在会话中的属性名称数组。
types: 要存储在会话中的属性类型。
28.3 请求参数案例
例如,将用户信息存储在会话中,以便在用户会话期间保持状态:
28.4 注解业务案例
@RequestAttribute
29.1 注解作用介绍 @RequestAttribute
注解用于将请求属性绑定到控制器方法的参数上。
29.2 注解属性介绍
value: 请求属性的名称。
29.3 请求参数案例
例如,从请求中获取属性"searchQuery":
29.4 注解业务案例
@ModelAttribute
30.1 注解作用介绍 @ModelAttribute
注解用于将请求参数或会话属性绑定到模型对象上。
30.2 注解属性介绍
value: 模型对象的名称。
30.3 请求参数案例
例如,将表单提交的参数绑定到用户对象上:
30.4 注解业务案例
@CookieValue
31.1 注解作用介绍 @CookieValue
注解用于将请求中的 Cookie 值绑定到控制器方法的参数上。
31.2 注解属性介绍
value: Cookie 的名称。
31.3 请求参数案例
例如,从请求中获取名为"sessionId"的 Cookie 值:
31.4 注解业务案例
@RequestBody
32.1 注解作用介绍 @RequestBody
注解用于将请求正文绑定到控制器方法的参数上。
32.2 注解属性介绍
无特定属性。
32.3 请求参数案例
例如,接收 JSON 格式的请求正文:
32.4 注解业务案例
@ResponseBody
33.1 注解作用介绍 @ResponseBody
注解用于指示方法的返回值直接作为 HTTP 响应正文返回。
33.2 注解属性介绍
无特定属性。
33.3 请求参数案例
例如,返回 JSON 格式的响应正文:
33.4 注解业务案例
@ResponseStatus
34.1 注解作用介绍 @ResponseStatus
注解用于设置响应的 HTTP 状态码。
34.2 注解属性介绍
value: 指定的 HTTP 状态码。
34.3 请求参数案例
无特定请求参数。
34.4 注解业务案例
@ExceptionHandler
35.1 注解作用介绍 @ExceptionHandler
注解用于处理控制器抛出的特定异常。
35.2 注解属性介绍
value: 指定异常的类型。
35.3 请求参数案例
无特定请求参数。
35.4 注解业务案例
@ControllerAdvice
36.1 注解作用介绍 @ControllerAdvice
注解用于定义一个类,该类可以包含多个@ExceptionHandler
、@InitBinder
和@ModelAttribute
方法,用于全局异常处理和数据绑定。
36.2 注解属性介绍
basePackages: 指定要扫描的包。
36.3 请求参数案例
无特定请求参数。
36.4 注解业务案例
@MatrixVariable
37.1 注解作用介绍 @MatrixVariable
注解用于从 URL 的矩阵变量中获取值。
37.2 注解属性介绍
pathVar: 指定矩阵变量所在的路径变量名称。
37.3 请求参数案例
例如,从 URL 中获取矩阵变量的值:
37.4 注解业务案例
@CrossOrigin
38.1 注解作用介绍 @CrossOrigin
注解用于启用跨源请求。
38.2 注解属性介绍
origins: 允许的来源。
methods: 允许的 HTTP 方法。
allowedHeaders: 允许的请求头。
38.3 请求参数案例
例如,允许特定域名进行跨域 GET 请求:
38.4 注解业务案例
@PostMapping
39.1 注解作用介绍 @PostMapping
注解用于映射 HTTP POST 请求到控制器的方法上。
39.2 注解属性介绍
value: 请求的 URL 路径。
consumes: 指定请求体的媒体类型。
39.3 请求参数案例
例如,发送 POST 请求创建新用户:
39.4 注解业务案例
@GetMapping
40.1 注解作用介绍 @GetMapping
注解用于映射 HTTP GET 请求到控制器的方法上。
40.2 注解属性介绍
value: 请求的 URL 路径。
40.3 请求参数案例
例如,发送 GET 请求获取用户列表:
40.4 注解业务案例
@PutMapping
41.1 注解作用介绍 @PutMapping
注解用于映射 HTTP PUT 请求到控制器的方法上,通常用于更新资源。
41.2 注解属性介绍
value: 请求的 URL 路径。
consumes: 指定请求体的媒体类型。
41.3 请求参数案例
例如,发送 PUT 请求更新用户信息:
41.4 注解业务案例
@DeleteMapping
42.1 注解作用介绍 @DeleteMapping
注解用于映射 HTTP DELETE 请求到控制器的方法上,用于删除资源。
42.2 注解属性介绍
value: 请求的 URL 路径。
42.3 请求参数案例
例如,发送 DELETE 请求删除用户:
42.4 注解业务案例
@PatchMapping
43.1 注解作用介绍 @PatchMapping
注解用于映射 HTTP PATCH 请求到控制器的方法上,通常用于部分更新资源。
43.2 注解属性介绍
value: 请求的 URL 路径。
consumes: 指定请求体的媒体类型。
43.3 请求参数案例
例如,发送 PATCH 请求部分更新用户信息:
43.4 注解业务案例
@RequestMapping
44.1 注解作用介绍 @RequestMapping
注解是一个通用的请求映射注解,可以用于映射不同类型的 HTTP 请求到控制器的处理方法。
44.2 注解属性介绍
value: 请求的 URL 路径。
method: 支持的 HTTP 方法。
params: 根据请求参数的存在或不存在来决定是否匹配。
headers: 根据请求头来决定是否匹配。
44.3 请求参数案例
例如,映射满足特定请求参数和头条件的 GET 请求:
44.4 注解业务案例
@PostMapping with consumes
Attribute
45.1 注解作用介绍 @PostMapping
注解与 consumes
属性结合使用,用于指定请求体的媒体类型。
45.2 注解属性介绍
consumes: 指定请求体的媒体类型,如
application/json
。
45.3 请求参数案例
例如,发送 POST 请求创建新用户,请求体为 JSON 格式:
45.4 注解业务案例
@GetMapping with produces
Attribute
46.1 注解作用介绍 @GetMapping
注解与 produces
属性结合使用,用于指定响应的媒体类型。
46.2 注解属性介绍
produces: 指定响应的媒体类型,如
application/json
。
46.3 请求参数案例
例如,发送 GET 请求获取用户列表,期望响应为 JSON 格式:
46.4 注解业务案例
@ExceptionHandler with responseBody
Attribute
47.1 注解作用介绍 @ExceptionHandler
注解与 responseBody
属性结合使用,用于返回异常信息。
47.2 注解属性介绍
responseBody: 指定异常处理方法的返回值是否作为响应正文。
47.3 请求参数案例
例如,处理资源未找到的异常,并返回 JSON 格式的错误信息:
47.4 注解业务案例
@ControllerAdvice with basePackages
48.1 注解作用介绍 @ControllerAdvice
注解与 basePackages
属性结合使用,用于定义全局异常处理和数据绑定的类。
48.2 注解属性介绍
basePackages: 指定要扫描的包,这些包中的控制器将使用
@ControllerAdvice
类中定义的方法。
48.3 请求参数案例
无特定请求参数。
48.4 注解业务案例
@SessionAttribute with name
49.1 注解作用介绍 @SessionAttribute
注解与 name
属性结合使用,用于从 HTTP 会话中获取属性。
49.2 注解属性介绍
name: 指定会话属性的名称。
49.3 请求参数案例
例如,从会话中获取名为"user"的属性:
49.4 注解业务案例
@RequestHeader
50.1 注解作用介绍 @RequestHeader
注解用于将特定的 HTTP 请求头值绑定到控制器方法的参数上。
50.2 注解属性介绍
value: 请求头的名称。
defaultValue: 当请求头不存在时使用的默认值。
50.3 请求参数案例
例如,获取
User-Agent
请求头的值:
50.4 注解业务案例
@CookieValue
51.1 注解作用介绍 @CookieValue
注解用于将特定的 Cookie 值绑定到控制器方法的参数上。
51.2 注解属性介绍
value: Cookie 的名称。
defaultValue: 当 Cookie 不存在时使用的默认值。
51.3 请求参数案例
例如,获取名为
sessionId
的 Cookie 的值:
51.4 注解业务案例
@MatrixVariable
52.1 注解作用介绍 @MatrixVariable
注解用于从 URL 的矩阵变量中提取值。
52.2 注解属性介绍
pathVar: 指定矩阵变量所在的路径变量。
52.3 请求参数案例
例如,从
/api/users;role=admin/123
中提取role
矩阵变量的值。
52.4 注解业务案例
@PathVariable
53.1 注解作用介绍 @PathVariable
注解用于从 URL 路径模板中提取变量值。
53.2 注解属性介绍
value: 路径变量的名称。
53.3 请求参数案例
例如,从
/api/users/123
中提取用户 ID:
53.4 注解业务案例
@ModelAttribute
54.1 注解作用介绍 @ModelAttribute
注解用于将提交的表单数据绑定到模型对象。
54.2 注解属性介绍
value: 模型属性的名称。
54.3 请求参数案例
例如,将表单数据绑定到
User
对象:
54.4 注解业务案例
@RequestBody
55.1 注解作用介绍 @RequestBody
注解用于将请求体绑定到控制器方法的参数上。
55.2 注解属性介绍
无特定属性。
55.3 请求参数案例
例如,接收 JSON 格式的请求体创建新用户:
55.4 注解业务案例
@ResponseBody
56.1 注解作用介绍 @ResponseBody
注解用于指示方法的返回值直接作为 HTTP 响应正文返回。
56.2 注解属性介绍
无特定属性。
56.3 请求参数案例
无特定请求参数。
56.4 注解业务案例
@RestControllerAdvice
57.1 注解作用介绍 @RestControllerAdvice
是一个组合注解,它结合了 @ControllerAdvice
和 @ResponseBody
。用于全局异常处理和返回 JSON 格式的响应。
57.2 注解属性介绍
basePackages: 指定要扫描的包。
无其他特定属性。
57.3 请求参数案例
无特定请求参数。
57.4 注解业务案例
@Component
58.1 注解作用介绍 @Component
是 Spring 的通用注解,用于标识一个类为 Spring 组件,可以被自动扫描和注册为 Spring 应用上下文的 Bean。
58.2 注解属性介绍
value: 指定组件的名称。
58.3 请求参数案例
无特定请求参数。
58.4 注解业务案例
@Service
59.1 注解作用介绍 @Service
是 Spring 的注解,用于标识一个类为服务层组件,通常包含业务逻辑。
59.2 注解属性介绍
无特定属性。
59.3 请求参数案例
无特定请求参数。
59.4 注解业务案例
@Repository
60.1 注解作用介绍 @Repository
是 Spring Data 的注解,用于标识一个类为数据访问对象,通常用于数据库访问。
60.2 注解属性介绍
无特定属性。
60.3 请求参数案例
无特定请求参数。
60.4 注解业务案例
@Autowired
61.1 注解作用介绍 @Autowired
是 Spring 的注解,用于自动装配依赖。
61.2 注解属性介绍
required: 指定是否必须进行自动装配,默认为
true
。value: 指定要注入的 Bean 的名称。
61.3 请求参数案例
无特定请求参数。
61.4 注解业务案例
@Qualifier
62.1 注解作用介绍 @Qualifier
注解用于解决 Spring 容器中存在多个相同类型的 Bean 时的自动装配问题。
62.2 注解属性介绍
value: 指定要注入的 Bean 的名称。
62.3 请求参数案例
无特定请求参数。
62.4 注解业务案例
@Profile
63.1 注解作用介绍 @Profile
注解用于根据激活的配置文件激活或禁用 Bean。
63.2 注解属性介绍
value: 指定配置文件的名称。
63.3 请求参数案例
无特定请求参数。
63.4 注解业务案例
@RequestMapping
64.1 注解作用介绍 @RequestMapping
注解用于映射 Web 请求到控制器的处理方法上,支持多种 HTTP 动作。
64.2 注解属性介绍
value: 请求的 URL 路径。
method: 限定请求的动作类型,如 GET、POST 等。
params: 根据请求参数的存在或不存在来决定是否匹配。
headers: 根据请求头来决定是否匹配。
64.3 请求参数案例
例如,映射 GET 请求到特定路径,并根据请求参数进行条件匹配:
64.4 注解业务案例
@PathVariable
65.1 注解作用介绍 @PathVariable
注解用于从 URL 路径模板中提取变量。
65.2 注解属性介绍
value 或 name: 指定路径变量的名称。
65.3 请求参数案例
例如,从
/api/users/123
路径中提取用户 ID:
65.4 注解业务案例
@RequestParam
66.1 注解作用介绍 @RequestParam
注解用于从请求的查询字符串参数中绑定值。
66.2 注解属性介绍
value 或 name: 请求参数的名称。
required: 指示参数是否必须。
defaultValue: 当参数不存在时使用的默认值。
66.3 请求参数案例
例如,从请求中获取名为
sort
的查询参数:
66.4 注解业务案例
@RequestPart
67.1 注解作用介绍 @RequestPart
注解用于处理multipart/form-data
请求中的部分,如文件上传。
67.2 注解属性介绍
value: 请求部分的名称。
67.3 请求参数案例
例如,处理包含文件的 multipart 请求:
67.4 注解业务案例
@ModelAttribute
68.1 注解作用介绍 @ModelAttribute
注解用于将请求参数或表单数据绑定到模型对象。
68.2 注解属性介绍
value: 模型属性的名称。
68.3 请求参数案例
例如,将表单提交的数据绑定到用户对象:
68.4 注解业务案例
@MatrixVariable
69.1 注解作用介绍 @MatrixVariable
注解用于从 URL 的矩阵变量中提取值。
69.2 注解属性介绍
pathVar: 指定矩阵变量所在的路径变量。
69.3 请求参数案例
例如,从
/api/users;role=admin/123
中提取角色信息:
69.4 注解业务案例
版权声明: 本文为 InfoQ 作者【肖哥弹架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/61d70d056cc3fb34d755d6690】。文章转载请联系作者。
评论