非官方,个人理解!!!
1. @Controller
@Controller 用于返回 jsp/html 页面
2. @ResponseBody
@Controller + @ResponseBody 用于返回 JSON 对象
3. @RestController
@RestController 相当于 @Controller + @ResponseBody
4. @RequestMapping「图 1」
图 1
5. @RequestBody
@RequestBody 用于接收前端传递给后端的 JSON 字符串中的数据
6. @PostMapping
@RequestMapping + @PostMapping「图 2」
图 2
6. @WebFilter
利用 @WebFilter 创建 Filter 过滤器类
@WebFilter 部分属性:
urlPatterns:指定拦截的路径
filterName:Filter 名称
filterName 的首字母需小写
7. @ServletComponentScan
在 SpringBootApplication 上使用 @ServletComponentScan 注解后,Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其他代码。
8. @ControllerAdvice
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.RestController;
// 拦截拥有 @RestController 或 @Controller 注解的类
@ControllerAdvice(annotations = {RestController.class, Controller.class})
9. @ExceptionHandler
import org.springframework.web.bind.annotation.ExceptionHandler;
import java.sql.SQLIntegrityConstraintViolationException;
// 处理 SQLIntegrityConstraintViolationException 异常
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
@ControllerAdvice + @ExceptionHandler 用于全局异常处理器
10. @RequestParam
检查 传递的参数名 和 方法中的形参名
若 变量类型 和 变量名 皆一致,则 @RequestParam 注解可省略
若 变量类型 不一致,则使用 @RequestParam 注解
若 变量名 不一致,则使用 @RequestParam("传递的参数名") 注解