目录
[1. 类级别注解](#1. 类级别注解)
[2. 方法级别注解](#2. 方法级别注解)
[3. 参数级别注解](#3. 参数级别注解)
[4. 字段/返回值注解](#4. 字段/返回值注解)
[1、控制层(Controller Layer)](#1、控制层(Controller Layer))
[2、业务层(Service Layer)](#2、业务层(Service Layer))
[3、数据层(Data Layer)](#3、数据层(Data Layer))
[4、视图层(View Layer)](#4、视图层(View Layer))
一、所有注解按照使用位置划分(类、方法、参数)
1. 类级别注解
作用范围:标记在类上,定义类的基本行为或全局配置。
注解 | 功能说明 |
---|---|
@Controller |
声明类为控制器,处理HTTP请求,通常配合视图解析器返回视图名称。 |
@RestController |
@Controller + @ResponseBody ,用于REST API,直接返回数据(JSON/XML)。 |
@RequestMapping |
定义类的基础请求路径(如@RequestMapping("/api") ),方法级路径继承此路径。 |
@ControllerAdvice |
定义全局异常处理类,结合@ExceptionHandler 处理多个控制器的异常。 |
@RestControllerAdvice |
@ControllerAdvice + @ResponseBody ,用于REST全局异常处理。 |
@CrossOrigin |
允许类中所有方法的跨域请求(可指定来源、方法、头信息等)。 |
@SessionAttributes |
声明类中需要跨请求共享的模型属性(如@SessionAttributes("user") )。 |
@EnableWebMvc |
启用Spring MVC的默认配置(如消息转换器、视图解析器),通常用在配置类。 |
@ComponentScan |
配置类上指定扫描的包路径,自动注册组件(如控制器、服务等)。 |
2. 方法级别注解
作用范围:标记在方法上,定义方法的行为或处理逻辑。
注解 | 功能说明 |
---|---|
@RequestMapping |
定义方法的请求路径和HTTP方法(如@RequestMapping(value="/test", method=RequestMethod.GET) )。 |
@GetMapping |
简化GET请求映射(等价于@RequestMapping(method=GET) )。 |
@PostMapping |
简化POST请求映射。 |
@PutMapping |
简化PUT请求映射。 |
@DeleteMapping |
简化DELETE请求映射。 |
@PatchMapping |
简化PATCH请求映射。 |
@ExceptionHandler |
在控制器或@ControllerAdvice 类中定义异常处理方法。 |
@ResponseBody |
方法返回值直接写入HTTP响应体(如返回JSON数据)。 |
@ResponseStatus |
指定HTTP响应状态码(如@ResponseStatus(HttpStatus.NOT_FOUND) )。 |
@ModelAttribute |
标记方法,在控制器方法执行前运行,向模型添加属性(如初始化表单对象)。 |
@InitBinder |
自定义数据绑定逻辑(如注册属性编辑器)。 |
@Async |
声明方法为异步执行(需配合@EnableAsync 启用)。 |
3. 参数级别注解
作用范围:标记在方法参数上,用于绑定请求数据。
注解 | 功能说明 |
---|---|
@RequestParam |
从请求参数中提取值(支持默认值和别名)。 |
@PathVariable |
从URL路径模板中提取变量(如/user/{id} 中的id )。 |
@RequestBody |
将请求体内容(如JSON)反序列化为Java对象。 |
@RequestHeader |
从请求头中提取值。 |
@CookieValue |
从Cookie中提取值。 |
@ModelAttribute |
将请求参数绑定到模型对象(常用于表单提交)。 |
@Valid / @Validated |
触发数据验证(如JSR 303校验)。 |
@SessionAttribute |
从会话中提取已存在的属性值(需配合@SessionAttributes 使用)。 |
4. 字段/返回值注解
作用范围:标记在字段或方法返回值上。
注解 | 功能说明 |
---|---|
@ResponseBody |
可标记方法,表示返回值直接写入响应体(与类级别@RestController 等价)。 |
@ResponseStatus |
也可标记异常类,指定抛该异常时的HTTP状态码。 |
二、按照使用层级划分(业务层、视图层、控制层)
1、控制层(Controller Layer)
核心注解:处理 HTTP 请求和响应,定义路由和请求映射
注解 | 作用说明 |
---|---|
@Controller |
标记类为控制器,处理 HTTP 请求,通常与视图技术(如 JSP、Thymeleaf)结合使用 |
@RestController |
@Controller + @ResponseBody 的组合,用于 RESTful API(直接返回数据) |
@RequestMapping |
通用请求映射(可指定 method 、path 等参数) |
@GetMapping |
简化 GET 请求映射 (@RequestMapping(method = RequestMethod.GET) ) |
@PostMapping |
简化 POST 请求映射 |
@PutMapping |
简化 PUT 请求映射 |
@DeleteMapping |
简化 DELETE 请求映射 |
@PatchMapping |
简化 PATCH 请求映射 |
@PathVariable |
从 URI 路径中提取参数(如 /users/{id} ) |
@RequestParam |
从 URL 查询参数中提取值(如 ?name=John ) |
@RequestBody |
将 HTTP 请求体(如 JSON)绑定到方法参数对象 |
@ResponseBody |
将方法返回值直接写入 HTTP 响应体(不经过视图解析器) |
@ExceptionHandler |
在控制器内定义异常处理方法 |
@CrossOrigin |
配置跨域请求支持(CORS) |
@InitBinder |
自定义请求参数绑定规则 |
2、业务层(Service Layer)
核心注解:实现业务逻辑(由 Spring Core 管理)
注解 | 作用说明 |
---|---|
@Service |
标记类为业务逻辑组件(Service 层) |
@Transactional |
声明事务管理(通常加在 Service 层方法上) |
3、数据层(Data Layer)
核心注解:数据访问和持久化(由 Spring Data/JPA 管理)
注解 | 作用说明 |
---|---|
@Repository |
标记类为数据访问组件(DAO 层) |
@Entity |
标记 JPA 实体类 |
@Table |
指定实体类对应的数据库表 |
@Id |
标记实体类的主键字段 |
@GeneratedValue |
配置主键生成策略 |
@Column |
配置实体类字段与数据库列的映射 |
4、视图层(View Layer)
核心注解:处理视图渲染和数据展示
注解 | 作用说明 |
---|---|
@ModelAttribute |
1. 将方法返回值添加到模型(用于视图渲染) 2. 从模型绑定数据到方法参数 |
@SessionAttributes |
声明控制器使用的会话属性(跨请求共享数据) |
@CookieValue |
从 HTTP Cookie 中提取值 |
@RequestHeader |
从 HTTP 请求头中提取值 |
5、其他辅助注解
注解 | 作用说明 |
---|---|
@Component |
通用组件标记(非 MVC 层,由 Spring Core 管理) |
@Configuration |
标记配置类(定义 Bean) |
@Bean |
声明方法返回的对象由 Spring 容器管理 |
@Autowired |
自动注入依赖(按类型) |
@Qualifier |
按名称指定注入的 Bean |
@Profile |
指定配置或 Bean 生效的环境 |
@Value |
注入配置文件中的属性值(如 @Value("${app.name}") ) |