StringBoot注解
系列文章目录
第一章 Controller注解大全
文章目录
- 系列文章目录
- 前言
- Controller层注解
- 路由相关注解
- 参数处理注解
- 响应处理注解
- 其他功能注解
- 组合注解与场景注解
- 后续
前言
现在java工程师已经对注解习以为常,做web开发的,经常会用到http的各类注解,这里做一下整理收集
在Spring Boot中,Controller层是处理HTTP请求的核心部分,常用的注解可分为路由、参数处理、响应处理、其他功能等类别。以下是详细的分类和说明:
Controller层注解
路由相关注解
@Controller
标记类为Controller组件,通常与模板引擎(如Thymeleaf)配合使用,返回视图名称。
@RestController
组合注解,包含@Controller
和@ResponseBody
,用于直接返回JSON/XML数据,适用于RESTful API。
@RequestMapping
通用请求映射注解,可定义路径、HTTP方法等。例如:
@RequestMapping(value = "/api", method = RequestMethod.GET)
@GetMapping
、@PostMapping
、@PutMapping
、@DeleteMapping
、@PatchMapping
分别对应HTTP的GET、POST、PUT、DELETE、PATCH方法,是@RequestMapping
的快捷方式。例如:
@GetMapping("/user/{id}")
参数处理注解
@PathVariable
从URL路径中获取变量值。例如:
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) { ... }
应用场景
- 查询单个实体或信息
- 查询id非保密
@RequestParam
从请求参数中获取值,支持默认值和是否必填配置。例如:
@GetMapping("/search")
public String search(@RequestParam(required = false, defaultValue = "") String keyword) { ... }
应用场景
- 查询多条信息,长度可控,URL总长度不超过255
@RequestBody
将请求体中的JSON/XML数据绑定到Java对象。通常用于POST/PUT请求。例如:
@PostMapping("/user")
public User createUser(@RequestBody User user) { ... }
应用场景
提交信息,用于插入操作,数据量较大
@RequestHeader
获取请求头中的值。例如:
@GetMapping("/info")
public String getInfo(@RequestHeader("User-Agent") String userAgent) { ... }
应用场景
校验信息
@CookieValue
获取Cookie中的值。例如:
@GetMapping("/demo")
public String getCookie(@CookieValue("sessionId") String sessionId) { ... }
应用场景
校验,权限
响应处理注解
@ResponseBody
将方法返回值直接写入HTTP响应体,通常与@Controller
配合使用。若使用@RestController
则无需单独添加。
@ResponseStatus
自定义HTTP响应状态码。例如:
@ResponseStatus(HttpStatus.CREATED)
public void create() { ... }
@ExceptionHandler
处理Controller内的异常,返回特定响应。例如:
@ExceptionHandler(NotFoundException.class)
public ResponseEntity<String> handleNotFound(NotFoundException ex) {return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
其他功能注解
@CrossOrigin
启用跨域请求支持。可配置在类或方法上。例如:
@CrossOrigin(origins = "http://example.com")
@RestController
public class MyController { ... }
@Validated
、@Valid
用于参数校验,支持JSR-303规范。例如:
@PostMapping("/user")
public User createUser(@Valid @RequestBody User user) { ... }
@InitBinder
自定义数据绑定和校验逻辑。例如:
@InitBinder
public void initBinder(WebDataBinder binder) {binder.setDisallowedFields("id");
}
组合注解与场景注解
@RestControllerAdvice
结合@ExceptionHandler
、@InitBinder
等,全局处理异常或数据绑定。例如:
@RestControllerAdvice
public class GlobalExceptionHandler { ... }
@ModelAttribute
在方法上使用时,将返回值添加到模型数据中;在参数上使用时,从模型中获取数据。例如:
@ModelAttribute("commonData")
public String addCommonData() {return "Shared Data";
}
这些注解覆盖了Spring Boot Controller层的大部分需求,合理组合使用可高效构建Web应用或RESTful API。
后续
后续继续完善其他注解,例如service mapper config aop 启动项等