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}")
相关推荐
武子康1 小时前
Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖
java·开发语言·数据库·学习·mysql·spring·微服务
王柏龙1 小时前
Asp.net core mvc中TagHelper的GetChildContentAsync和Content区别
mvc·.netcore
❀͜͡傀儡师4 小时前
OAuth 2.0 安全最佳实践 (RFC 9700) password 授权类型已经不推荐使用了,将在计划中移除
spring·security·oauth2·oauth 2.0
懂得节能嘛.5 小时前
【SpringAI实战】实现仿DeepSeek页面对话机器人(支持多模态上传)
java·spring
Spliceㅤ8 小时前
Spring框架
java·服务器·后端·spring·servlet·java-ee·tomcat
中东大鹅9 小时前
SpringBoot配置文件
java·spring boot·spring
笑衬人心。10 小时前
后端项目中大量 SQL 执行的性能优化
sql·spring·性能优化
RealmElysia13 小时前
SpringCache
java·spring·bootstrap
hqxstudying14 小时前
J2EE模式---业务代表模式
java·前端·python·设计模式·java-ee·mvc
OEC小胖胖15 小时前
架构篇(一):告别MVC/MVP,为何“组件化”是现代前端的唯一答案?
前端·架构·mvc