当前位置: 首页 > article >正文

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

目录

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

1. 类级别注解

2. 方法级别注解

3. 参数级别注解

4. 字段/返回值注解

二、按照使用层级划分(业务层、视图层、控制层) 

1、控制层(Controller Layer)

2、业务层(Service Layer)

3、数据层(Data 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)

核心注解:处理视图渲染和数据展示

注解作用说明
@ModelAttribute1. 将方法返回值添加到模型(用于视图渲染)
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}")

http://www.lryc.cn/news/2385498.html

相关文章:

  • 新能源汽车产业链图谱分析
  • 如何在PyCharm2025中设置conda的多个Python版本
  • 005 深度优先搜索(DFS)算法详解:图解+代码+经典例题
  • maven快速上手
  • cplex12.9 安装教程以及下载
  • 甘特图实例 dhtmlxGantt.js
  • AMD硬件笔试面试题型解析
  • 视频剪辑 VEGAS - 配置视频片段保持原长宽比
  • 力扣 54 .螺旋矩阵
  • 四、【API 开发篇 (上)】:使用 Django REST Framework 构建项目与模块 CRUD API
  • python使用pycharm和conda 设置默认使用清华镜像
  • Prometheus+Grafana实现对服务的监控
  • ARM笔记-ARM伪指令及编程基础
  • Python入门手册:Python基础语法
  • SpringBoot-SpringBoot源码解读
  • CAD如何导出PDF?PDF如何转CAD?详细教程来了
  • python-数据可视化(大数据、数据分析、可视化图像、HTML页面)
  • el-select中自定义 两组el-option,但是key不一样,并且点击需获取当前整个项的所有属性
  • 【笔记】OpenCV的学习(未完)
  • 多模态大语言模型arxiv论文略读(八十七)
  • 《棒球百科》长寿运动排名·棒球1号位
  • Maven 项目打包时添加本地 Jar 包
  • 记录将网站从http升级https
  • 如何利用 ORM 框架有效防范 SQL 注入攻击
  • spark-shuffle 类型及其对比
  • 免费PDF工具-PDF24V9.16.0【win7专用版】
  • 游戏开发实战(二):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】
  • 人工智能发展
  • 在Rockchip平台上利用FFmpeg实现硬件解码与缩放并导出Python接口
  • Flink集成资源管理器