SpringMVC04所有注解按照使用位置划分| 按照使用层级划分(业务层、视图层、控制层)

目录

一、所有注解按照使用位置划分(类、方法、参数)

[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))

5、其他辅助注解


一、所有注解按照使用位置划分(类、方法、参数)

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 通用请求映射(可指定 methodpath 等参数)
@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}")
相关推荐
qq_三哥啊40 分钟前
【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
spring·intellij-idea·mybatis
别惹CC1 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
人工智能·spring boot·spring
寒士obj2 小时前
Spring事物
java·spring
IT毕设实战小研10 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
甄超锋11 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
Java小白程序员14 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
甄超锋15 小时前
Java Maven更换国内源
java·开发语言·spring boot·spring·spring cloud·tomcat·maven
还是鼠鼠16 小时前
tlias智能学习辅助系统--Maven 高级-私服介绍与资源上传下载
java·spring boot·后端·spring·maven
还是大剑师兰特17 小时前
Spring面试题及详细答案 125道(1-15) -- 核心概念与基础1
spring·大剑师·spring面试题·spring教程
python_13620 小时前
web请求和响应
java·spring·github