专业商城网站建设价格低,嘉兴网站推广优化公司,app拉新平台有哪些,网站建设都是需要什么软件引言
在 Spring Boot 应用程序中#xff0c;Controller 是 MVC 架构模式中的核心组件之一#xff0c;负责处理 HTTP 请求并返回响应结果。为了更好地映射请求、解析请求参数、执行业务逻辑和生成视图或 JSON 数据#xff0c;Controller 中广泛使用了各种注解。本文将全面梳…引言
在 Spring Boot 应用程序中Controller 是 MVC 架构模式中的核心组件之一负责处理 HTTP 请求并返回响应结果。为了更好地映射请求、解析请求参数、执行业务逻辑和生成视图或 JSON 数据Controller 中广泛使用了各种注解。本文将全面梳理 Spring Boot 中 Controller 接口所使用的各类注解及其具体使用案例。
一、Controller 类级别的注解
1. 控制器类注解
Controller
import org.springframework.stereotype.Controller;Controller
public class MyController {// ...
}用途标记一个类作为Spring MVC的控制器此类中包含的方法将被映射为HTTP请求处理器。
2. RESTful控制器注解
RestController
import org.springframework.web.bind.annotation.RestController;RestController
public class MyRestController {// ...
}用途RestController是一个组合注解它同时包含了Controller和ResponseBody意味着该控制器的所有方法都将直接返回JSON、XML或者其他类型的数据而不是视图名。
二、路径映射注解
RequestMapping
RequestMapping
import org.springframework.web.bind.annotation.RequestMapping;Controller
RequestMapping(/api/v1)
public class MyApiV1Controller {RequestMapping(/users)public ResponseEntityListUser getAllUsers() {// ...}
}用途它可以放在类或方法上用于指定控制器类或者方法处理的请求的基本URL路径。
三、 方法级别的路径映射注解
GetMapping, PostMapping, PutMapping, DeleteMapping
import org.springframework.web.bind.annotation.*;GetMapping(/users/{id})
public User getUser(PathVariable Long id) {// ...
}PostMapping(/users)
public ResponseEntityUser createUser(RequestBody User user) {// ...
}PutMapping(/users/{id})
public ResponseEntityUser updateUser(PathVariable Long id, RequestBody User updatedUser) {// ...
}DeleteMapping(/users/{id})
public ResponseEntityVoid deleteUser(PathVariable Long id) {// ...
}用途这些注解分别对应HTTP的GET、POST、PUT和DELETE方法用于精确映射HTTP请求到相应的方法。
四、 方法参数注解
PathVariable
GetMapping(/users/{userId}/details)
public UserDetails getUserDetails(PathVariable(userId) Long userId) {// ...
}用途从URL模板变量中提取值并将其绑定到方法参数。
RequestParam
GetMapping(/search)
public ListUser searchUsers(RequestParam(name name, required false) String name,RequestParam(defaultValue 10) int limit) {// ...
}用途从请求的查询参数中获取值。
RequestBody
PostMapping(/users)
public User createUser(RequestBody User newUser) {// ...
}用途将整个HTTP请求体转换成Java对象。
RequestHeader
GetMapping(/headers)
public String getHeaderValue(RequestHeader(Authorization) String authHeader) {// ...
}用途从请求头中提取指定名称的值。
CookieValue
GetMapping(/cookies)
public String getCookie(CookieValue(value JSESSIONID, defaultValue ) String sessionId) {// ...
}用途从请求的cookie中提取指定名称的值。
ModelAttribute
ModelAttribute(userForm)
public UserForm setUpUserForm() {return new UserForm();
}PostMapping(/register)
public String register(ModelAttribute(userForm) UserForm userForm) {// ...
}作用用于将请求参数自动绑定到模型属性对象或者在方法体内填充模型属性。
五、其他增强型注解
ModelAttribute 用于方法参数时它可以从模型中查找已有的属性或者通过调用方法来创建新的属性。
Valid 结合 JSR-303/JSR-349 Bean Validation 使用对方法参数进行数据校验。
PostMapping(/register)
public String register(Valid ModelAttribute(userForm) UserForm userForm, BindingResult bindingResult) {if (bindingResult.hasErrors()) {// ...}// ...
}六、全局异常处理和日志记录
ControllerAdvice 用于创建全局异常处理器处理所有Controller中抛出的异常。
ControllerAdvice
public class GlobalExceptionHandler {ExceptionHandler(UserNotFoundException.class)public ResponseEntityString handleUserNotFoundException(UserNotFoundException ex) {// ...}
}通过以上示例我们展示了Spring Boot中Controller接口常见的注解及其实际应用场景。根据具体需求开发者可以选择合适的注解以构建功能完备且健壮的RESTful API。