69 个Spring mvc 全部注解:真实业务使用案例说明(必须收藏)
ccwgpt 2025-05-02 09:35 27 浏览 0 评论
Spring MVC框架的注解为Web开发提供了一种简洁而强大的声明式方法。从控制器的定义、请求映射、参数绑定到异常处理和响应构建,这些注解涵盖了Web应用程序开发的各个方面。它们不仅简化了编码工作,还增强了代码的清晰度和应用程序的可维护性。通过 @Controller、 @RequestMapping、 @PathVariable、 @RequestParam、 @RequestBody等注解,Spring MVC使得处理复杂的Web请求变得容易,同时 @Valid和 @Validated注解确保了数据的准确性。全局异常处理和响应状态管理通过 @ExceptionHandler和 @ResponseStatus注解实现,而 @ResponseBody和 @RestController注解则为RESTful服务提供了便利。这些注解的集合构成了Spring MVC的核心,使其成为开发灵活且功能丰富的Web应用程序的首选框架。
肖哥弹架构 跟大家“弹弹” Spring常用注解,需要代码关注
欢迎 点赞,关注,评论。
关注公号Solomon肖哥弹架构获取更多精彩内容
历史热点文章
- 28个验证注解,通过业务案例让你精通Java数据校验(收藏篇)
- Java 8函数式编程全攻略:43种函数式业务代码实战案例解析(收藏版)
- 功能强大,代码优雅:Java8真实案例Stream大数据集高效之旅(收藏版)
- MySQL索引完全手册:真实业务图文讲解17种索引运用技巧(必须收藏)
- 一个项目代码讲清楚DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
@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}", method为 RequestMethod.GET, params为 "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 withconsumes 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 withproduces 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 withresponseBody 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 withbasePackages
48.1 注解作用介绍 @ControllerAdvice 注解与 basePackages 属性结合使用,用于定义全局异常处理和数据绑定的类。
48.2 注解属性介绍
- basePackages: 指定要扫描的包,这些包中的控制器将使用 @ControllerAdvice 类中定义的方法。
48.3 请求参数案例
- 无特定请求参数。
48.4 注解业务案例
@ControllerAdvice(basePackages = "com.example.web")
public class GlobalControllerAdvice {
// 包含全局异常处理、属性初始化和模型属性的方法。
}
@SessionAttribute withname
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和角色信息获取用户。
}
相关推荐
- 用Deepseek扩写土木工程毕业论文实操指南
-
用Deepseek扩写毕业论文实操指南一、前期准备整理现有论文初稿/提纲列清楚论文核心框架(背景、现状、意义、方法、数据、结论等)梳理好关键文献,明确核心技术路线二、Deepseek扩写核心思路...
- 985学霸亲授,DeepSeek也能绘6大科研图表,5分钟就出图
-
在实验数据处理中,高效可视化是每个科研人的必修课。传统绘图软件操作复杂、耗时费力,而智能工具DeepSeek的出现彻底改变了这一现状。本文将详解如何用DeepSeek一键生成六大科研常用图表,从思维导...
- AI写论文刷屏?大学生正在丢掉的思考力
-
一、宿舍深夜:当论文变成"Ctrl+C+V"凌晨两点的大学宿舍,小王对着电脑屏幕叹气。本该三天前开始写的近代史论文,此刻还一片空白。他熟练打开某AI写作网站,输入"论五四运动的...
- Grok在辅助论文写作上能不能既“聪明”又“可怕”?!
-
AcademicIdeas-学境思源AI初稿写作随着人工智能技术的飞速发展,论文写作这一学术任务正迎来新的助力。2025年2月18日,美国xAI公司推出了备受瞩目的Grok3模型,其创始人埃隆·...
- 大四论文沟通场景!音频转文字难题听脑AI来化解
-
大四学生都知道,写论文时和导师沟通修改意见,简直是“过关斩将”。电话、语音沟通完,想把导师说的修改方向、重点要求记下来,麻烦事儿可不少。手写记不全,用普通录音转文字工具,转完还得自己慢慢找重点,稍不注...
- 论文写作 | 技术路线图怎么画?(提供经典优秀模板参考)
-
技术路线图是一种图表或文字说明,用于描述研究目标、方法和实施计划。它展示了研究的整体框架和步骤,有助于读者理解研究的逻辑和进展。在课题及论文中,技术路线图是常见的一部分,甚至是一个类似心脏一样的中枢器...
- 25年信息系统项目管理师考试第2批论文题目写作建议思路框架
-
25年信息系统项目管理师考试第2批论文题目写作建议思路框架--马军老师
- 微信购物应尽快纳入法律框架(微信购物管辖)
-
符向军近日,甘肃省工商行政管理局发布《2016年上半年信息分析报告》。报告显示,微信网购纠纷迅猛增长,网络购物投诉呈上升趋势。投诉的主要问题有出售的商品质量不过关、消费者通过微信付款后对方不发货、购买...
- 泛珠三角区域网络媒体与腾讯微信签署《战略合作框架协议》
-
新海南客户端、南海网7月14日消息(记者任桐)7月14日上午,参加第四届泛珠三角区域合作网络媒体论坛的区域网络媒体负责人及嘉宾一行到腾讯微信总部座谈交流,并签署《战略合作框架协议》(以下简称《框架协...
- 离线使用、植入微信-看乐心Mambo手环如何打破框架
-
从2014年开始智能手环就成功进入人们的生活,至今已经演变出数据监测、信息推送、心率监测等诸多五花八门的功能,人们选择智能手环并不指望其能够改变身体健康情况,更多的是通过数据来正视自身运动情况和身体健...
- 华专网络:如何零基础制作一个网站出来?
-
#如何零基础制作一个网站出来?#你是不是觉得网站建设很复杂,觉得自己是小白,需求不明确、流程搞不懂、怕被外包公司坑……这些问题我都懂!今天华专网络就用大白话给你捋清楚建站的全流程,让你轻松get网站制...
- WAIC2024丨明日上午9点,不见不散!共同探讨智能社会与全球治理框架
-
大咖云集,硕果闪耀WAIC2024世界人工智能大会智能社会论坛将于7月5日9:00-12:00与你相约直播间WAIC2024上海杨浦同济大学哔哩哔哩多平台同步直播探讨智能社会与全球治理框架WAIC...
- 约基奇:森林狼换来戈贝尔时大家都在嘲笑 他们的阵容框架很不错
-
直播吧5月4日讯西部季后赛半决赛,掘金将迎战森林狼,约基奇赛前接受采访。约基奇说道:“当蒂姆-康纳利(森林狼总经理、前掘金总经理&曾选中约基奇)做了那笔交易(换来戈贝尔)时,每个人都在嘲笑他...
- 视频号带货为什么一个流量都没有?顶级分析框架送给你
-
视频号带货为什么一个流量都没有?遇到问题,一定是步步来分析内容,视频号带货一个流量都没有,用另外一个意思来讲,就可以说是零播放。为什么视频号带货一个流量都没有?跟你说再多,都不如来个分析框架。1、是否...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)