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

news2025/12/15 13:53:13

目录

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

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.coloradmin.cn/o/2385498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新能源汽车产业链图谱分析

1. 产业定义 新能源汽车是指采用非常规的车用燃料作为动力来源,综合车辆的动力控制和驱动方面的先进技术,形成的具有新技术、新结构、技术原理先进的汽车。 新能源车包括四大类型:混合动力电动汽车(HEV)、纯电动汽车…

如何在PyCharm2025中设置conda的多个Python版本

前言 体验的最新版本的PyCharm(Community)2025.1.1,发现和以前的版本有所不同。特别是使用Anaconda中的多个版本的Python的时候。 关于基于Anaconda中多个Python版本的使用,以及对应的Pycharm(2023版)的使用,可以参考…

maven快速上手

之前我们项目如果要用到其他额外的jar包,需要自己去官网下载并且导入。但是有maven后,直接在maven的pom.xml文件里用代码配置即可,配置好后maven会自动帮我们联网下载并且会自动导入该jar包 在右边的maven中,我们可以看到下载安装…

cplex12.9 安装教程以及下载

cplex 感觉不是很好找,尤其是教育版,我这里提供一个版本,在下面的图可以看到,不仅可以配置matlab,也可以配置vs,现在拿vs2017来测试一下,具体文件的文件有需要的可以复制下面的链接获取 我用网盘分享了「c…

甘特图实例 dhtmlxGantt.js

本文介绍了如何使用dhtmlxGantt库创建一个基础的甘特图示例,并对其进行汉化和自定义配置。首先,通过引入dhtmlxgantt.css和dhtmlxgantt.js文件初始化甘特图。接着,通过设置gantt.i18n.setLocale("cn")实现核心文本的汉化&#xff0…

视频剪辑 VEGAS - 配置视频片段保持原长宽比

VEGAS 配置视频片段保持原长宽比 右击视频片段 -> 选择【开关】 -> 勾选【保持长宽比】 右击视频片段 -> 点击【属性】 -> 弹出【属性】窗口 点击【媒体】 -> 选择【像素宽高比】为【1,0000(方形)】

力扣 54 .螺旋矩阵

文章目录 题目介绍题解 题目介绍 题解 代码如下&#xff1a; class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res new ArrayList<>();if (matrix.length 0){return res;}int l 0, r matrix[0].length - 1, t 0, b…

四、【API 开发篇 (上)】:使用 Django REST Framework 构建项目与模块 CRUD API

【API 开发篇 】&#xff1a;使用 Django REST Framework 构建项目与模块 CRUD API 前言为什么选择 Django REST Framework (DRF)&#xff1f;第一步&#xff1a;创建 Serializers (序列化器)第二步&#xff1a;创建 ViewSets (视图集)第三步&#xff1a;配置 URLs (路由)第四步…

ARM笔记-ARM伪指令及编程基础

第四章 ARM伪指令及编程基础 4.1 伪指令概述 4.1.1 伪指令定义 人们设计了一些专门用于指导汇编器进行汇编工作的指令&#xff0c;由于这些指令不形成机器码指令&#xff0c;它们只是在汇编器进行汇编工作的过程中起作用&#xff0c;所以被叫做伪指令。 4.1.2 伪指令特征 …

Python入门手册:Python基础语法

Python是一种简洁、易读且功能强大的编程语言&#xff0c;非常适合初学者入门。无论你是编程新手&#xff0c;还是有一定编程基础但想学习Python的开发者&#xff0c;掌握Python的基础语法都是迈向高效编程的第一步。本文将详细介绍Python的基本语法&#xff0c;包括变量和数据…

CAD如何导出PDF?PDF如何转CAD?详细教程来了

浩辰CAD看图王是一款功能强大的CAD图纸查看与编辑工具&#xff0c;其核心功能之一便是支持CAD与PDF格式的互转。下面是CAD看图王输出PDF和PDF转CAD功能的详细介绍及操作步骤&#xff1a; 一、输出PDF功能 看图王可以将CAD图纸转换为PDF格式&#xff0c;是文件在不同的设备上显…

python-数据可视化(大数据、数据分析、可视化图像、HTML页面)

通过 Python 读取 XLS 、CSV文件中的数据&#xff0c;对数据进行处理&#xff0c;然后生成包含柱状图、扇形图和折线图的 HTML 报告。这个方案使用了 pandas 处理数据&#xff0c;matplotlib 生成图表&#xff0c;并将图表嵌入到 HTML 页面中。 1.XSL文件生成可视化图像、生成h…

【笔记】OpenCV的学习(未完)

由于只记关键和不懂的部分 希望做到下次再看这部分笔记就记得 所以用词会非常简练 前向传播 输入数据依次经过模型的各层&#xff0c;按照各层定义的运算规则进行计算&#xff0c;最终得到模型预测输出的过程。 单向的信息流动&#xff0c;不涉及模型参数的更新。 助于思考的…

多模态大语言模型arxiv论文略读(八十七)

MG-LLaVA: Towards Multi-Granularity Visual Instruction Tuning ➡️ 论文标题&#xff1a;MG-LLaVA: Towards Multi-Granularity Visual Instruction Tuning ➡️ 论文作者&#xff1a;Xiangyu Zhao, Xiangtai Li, Haodong Duan, Haian Huang, Yining Li, Kai Chen, Hua Ya…

记录将网站从http升级https

http与https 你知道http是什么吗&#xff0c;那你知道https吗&#xff1f;在进行升级之前我们应该都听说http不安全&#xff0c;要用https&#xff0c;那你知道这是为什么吗&#xff1f; 什么是http&#xff1f; HTTP 是超文本传输协议&#xff0c;也就是HyperText Transfer…

免费PDF工具-PDF24V9.16.0【win7专用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取码: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

一周学会Pandas2 Python数据处理与分析-Pandas2数据合并与对比-pd.concat():轴向拼接

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 在数据分析中&#xff0c;数据往往分散在多个来源&#xff08;如不同文件、数据库表或API&#xff09;&#xff0c;需…

安卓原生兼容服务器

安卓原生兼容服务器的定义 安卓原生兼容服务器‌指基于Android系统内核和服务框架构建的服务器环境&#xff0c;能够在不依赖第三方适配层的情况下&#xff0c;直接运行符合Android API规范的服务程序&#xff0c;并满足与其他软硬件组件的协同工作需求。其核心特征体现在以下…

优化用户体验:拦截浏览器前进后退、刷新、关闭、路由跳转等用户行为并弹窗提示

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 需求 首先列举一下需要拦截的行为&#xff0c;接下来我们逐个实现。 浏览器前进后退标签页刷新和关闭路由跳转 1、拦截浏览器前进后退 这里的实现是核心&#xff0c;涉及到大…

大学生创新创业项目管理系统设计——数据库实验九

本实验为自己设计完成&#xff0c;我当年数据库实验得了94分 目录 1.实验目的 2.实验内容和要求 3.实验步骤 4.实验心得 实验九 数据库设计 1.实验目的 掌握数据库设计的过程和方法。 2.实验内容和要求 &#xff08;35&#xff09;大学生创新创业项目管理系统设计 一…