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

工作中常用的注解梳理

注解是贴在类、方法、变量上的标记标签以开头本身不执行业务代码。作用主要有以下几点代码标识说明替代配置文件自动生成代码框架识别驱动数据约束与校验单元测试序列化转换日常工作中常用的注解主要有以下十三类JDK原生注解JSR303校验注解JAX-RS规范注解SpringMVC注解SpringBoot核心注解SpringCloud分布式注解MyBatis原生SQL注解MyBatis-Plus实体映射注解JUnit测试注解Mock测试框架注解Lombok简化代码注解Jackson序列化注解Fastjson序列化注解。一、JDK原生注解1. 基础标记注解Override重写父类 / 接口方法Deprecated标记方法 / 类已过时不推荐使用SuppressWarnings压制编译器警告2. 元注解用来定义注解Target限定注解作用位置类、方法、字段等Retention注解生命周期源码 / 编译 / 运行时Documented生成文档时保留注解Inherited子类可继承父类注解3. 函数式 空判断FunctionalInterface标识函数式接口SafeVarargs抑制泛型可变参数警告NotNulljdk8非空标记4. 线程相关Native本地原生方法标识二、JSR303 常用校验注解JSR303注解使用时需注意以下几点依赖spring-boot-starter-validation实体字段加注解接口参数加Valid触发校验自定义提示message提示文案1. 空值校验NotNull对象不能为 null空字符串 / 空格允许NotBlank字符串非空、剔除空格后不能为空NotEmpty字符串、集合、数组不能为空2. 数值范围Min最小值限制Max最大值限制Size(min,max)字符 / 集合长度区间DecimalMin小数最小值DecimalMax小数最大值3. 格式校验Email邮箱格式校验Pattern(regexp)正则匹配自定义格式Digits限制整数、小数位数三、JAX-RSRestful 规范JAX-RS是 Java 官方的RESTful 接口开发规范不是 Spring 的常见实现RestEasy、Jersey、Apache CXF。1. 请求方法对应 HTTPGET查询POST新增 / 提交PUT修改DELETE删除HEAD仅获取响应头OPTIONS跨域预检2. 路径与参数Path(/user)定义接口路径类 / 方法上PathParam(id)获取 URL 路径参数/user/{id}QueryParam(name)获取 URL 查询参数?namexxxFormParam获取表单参数HeaderParam获取请求头CookieParam获取 Cookie四、Spring MVC相关1. 控制器类注解Controller标识普通控制器返回视图RestController组合注解ControllerResponseBody直接返回 JSONRequestMapping类 / 方法统一请求路径前缀2. 请求类注解GetMapping处理 GET 查询请求PostMapping处理 POST 提交新增3. 参数接收类注解RequestParam获取 URL 查询参数、表单参数RequestBody接收 JSON 格式请求体五、Spring Boot相关1. 启动 配置类SpringBootApplication启动主类三合一注解Configuration标记配置类Bean手动注册 Bean 到容器Value读取配置文件属性ConfigurationProperties批量绑定配置2. 组件注入Component通用普通组件Service业务服务层Repository数据持久层Autowired自动装配注入Qualifier按名称匹配 BeanResourceJSR 规范注入注解3.事务注解Transactional开启事务控制4. AOP 切面Aspect切面类Before前置通知After后置通知Around环绕通知Pointcut切点表达式5. 全局异常ControllerAdvice全局异常统一处理ExceptionHandler捕获指定异常6. 跨域 缓存CrossOrigin允许跨域请求Cacheable查询缓存CachePut更新缓存CacheEvict清空缓存7. 测试SpringBootTest加载 Spring 容器做集成测试MockBean模拟注入 Bean 对象六、Spring Cloud常用注解1. 注册发现EnableEurekaServer搭建 Eureka 注册中心EnableEurekaClient服务注册到 EurekaEnableDiscoveryClient通用服务注册发现兼容多注册中心2. 负载均衡 调用LoadBalanced开启 Ribbon 本地负载均衡FeignClient声明 Feign 远程调用接口3. 网关 配置RefreshScope动态刷新配置EnableConfigServer搭建配置中心服务端EnableGateway开启 Spring Cloud 网关4. 分布式事务GlobalTransactionalSeata 全局事务注解5. 限流授权PreAuthorize网关 / 服务权限校验七、MyBatis 原生注解写 SQL 用Select查询 SQLInsert新增 SQLUpdate修改 SQLDelete删除 SQLParam给参数起别名多参数必用Results / Result手动映射字段八、MyBatis-Plus 实体类注解最常用TableName绑定数据库表名TableId主键字段必须TableField普通字段映射。字段名不一样用它不想插入 / 更新用exist falseVersion乐观锁字段LogicDelete逻辑删除字段注MyBatis-Plus 条件构造器QueryWrapper/LambdaQueryChainWrapper不是注解但最常用。九、JUnit 单元测试Test标记测试方法DisplayName给测试类 / 方法起中文名字BeforeEach每个测试方法执行前都运行AfterEach每个测试方法执行后都运行BeforeAll所有方法开始前只执行一次静态方法AfterAll所有方法结束后只执行一次静态方法Disabled禁用 / 忽略这个测试Timeout设置超时时间AssertThrows测试异常抛出十、Mock框架注解Mockito是Java 主流单元测试 Mock 框架用来模拟外部依赖隔离代码快速写单元测试。常用注解如下Mock创建模拟对象方法默认无真实逻辑Spy监控真实对象默认执行原有逻辑InjectMocks将 Mock/Spy 对象注入被测类Captor捕获方法入参ExtendWith(MockitoExtension)JUnit5 启用 MockitoMockBeanSpring 环境替换容器 Bean 为模拟对象十一、LombokLombok 可以自动生成代码不用手写 getter/setter/ 构造器 /toString大幅简化实体类。常用注解如下Data自动生成getter、setter、toString、equals、hashCode、无参构造AllArgsConstructor生成全参构造方法NoArgsConstructor生成无参构造方法Builder生成链式建造者模式优雅赋值Slf4j直接用日志不用创建 Logger 对象ToString生成实体类toString()方法不用自己手写打印对象时会直接输出字段名和值EqualsAndHashCode生成equals()和hashCode()方法用于对象相等判断、哈希存储十二、Jackson序列化JsonProperty指定序列化后字段名JsonIgnore序列化忽略该字段不返回前端JsonFormat日期格式化JsonAlias反序列化兼容多个别名十三、Fastjson序列化JSONField字段别名、格式化、顺序JSONField(serialize false)序列化忽略字段注小对象、高吞吐、简单结构选Fastjson2序列化 / 反序列化比 Jackson 快20%~50%。复杂嵌套、大对象、高并发稳定性、低 GC选Jackson内存更省、GC 压力小、更稳。Spring Boot 项目、企业级开发优先Jackson默认集成、生态强、安全更稳。Fastjson1.x 不要用漏洞多、已停维护。

相关文章:

工作中常用的注解梳理

注解是贴在类、方法、变量上的标记标签,以开头,本身不执行业务代码。作用主要有以下几点:代码标识说明替代配置文件自动生成代码框架识别驱动数据约束与校验单元测试序列化转换日常工作中常用的注解主要有以下十三类:JDK原生注解J…...

告别普通回归!R 语言混合效应 (多水平 / 嵌套) 模型 + 贝叶斯实现,一篇学会

在科研数据分析里,普通回归已经不够用了。你是不是经常遇到:数据有分层、嵌套、多水平结构,普通回归不准?计数数据、0-1 数据、过度离散、零膨胀,不会选模型?时空自相关、系统发育数据,不知道怎…...

ElevenLabs江西话TTS上线倒计时(仅限首批200家本地企业内测):如何抢占方言AI语音红利窗口期?

更多请点击: https://codechina.net 第一章:ElevenLabs江西话语音技术正式发布与战略意义 ElevenLabs于2024年9月正式推出全球首个面向方言场景深度优化的语音合成模型——Jiangxi-Dialect TTS v1.0,首次实现对赣语昌靖片(以南昌…...

腾讯云服务器跑通 Cube Sandbox:从 PVM 内核到 65 ms 冷启动的全程实战

腾讯云服务器跑通 Cube Sandbox:从 PVM 内核到 65 ms 冷启动的全程实战 适合第一次想把 Cube Sandbox 真正跑起来的开发者。本文用一台普通腾讯云 CVM(OpenCloudOS 9.4 / 8C16G / 无嵌套虚拟化),从空白系统一路推到 Sandbox.creat…...

鸿蒙同城兴趣圈页面构建:活动热区地图、话题动态与安全提示模块详解

鸿蒙同城兴趣圈页面构建:活动热区地图、话题动态与安全提示模块详解 前言 在 HarmonyOS 6.0 应用开发中,社交类页面的地理可视化、话题互动和安全提示是提升用户体验的关键补充模块。本文将以“同城兴趣圈”应用中的“活动热区”模拟地图、“话题动态”帖…...

鸿蒙同城兴趣圈页面构建:今晚活动与同频推荐模块详解

鸿蒙同城兴趣圈页面构建:今晚活动与同频推荐模块详解 前言 在 HarmonyOS 6.0 应用开发中,社交类页面的活动展示和用户推荐是提升用户参与度的核心功能模块。本文将以“同城兴趣圈”应用中的“今晚活动”时间线模块和“同频推荐”用户卡片网格为例&#x…...

鸿蒙同城兴趣圈页面构建:附近社群与兴趣标签模块详解

鸿蒙同城兴趣圈页面构建:附近社群与兴趣标签模块详解 前言 在 HarmonyOS 6.0 应用开发中,社交类页面的核心挑战在于如何高效展示附近社群、兴趣标签和活动信息。本文将以“同城兴趣圈”应用的主页面为例,深入解析如何在鸿蒙平台上构建社交发现…...

鸿蒙云端相册页面构建:我的相册横向滚动与空间占用模块详解

鸿蒙云端相册页面构建:我的相册横向滚动与空间占用模块详解 前言 在 HarmonyOS 6.0 应用开发中,云端相册类页面的相册管理和存储空间分析是用户深度使用的核心功能模块。本文将以“云端相册”应用中的“我的相册”横向滚动列表和“空间占用”存储分析模块…...

ChatGPT 2026智能体生态爆发(官方白皮书未公开的7个生产级约束条件)

更多请点击: https://kaifayun.com 第一章:ChatGPT 2026智能体生态爆发的范式跃迁 2026年,ChatGPT已不再仅是一个对话模型,而是演进为可自主编排、跨平台协同、具备实时环境感知与决策闭环能力的智能体(Agent&#xf…...

AI写的小说与人类作者写的究竟有什么区别

AI写的小说与小说作者写的究竟有什么区别当2026年生成式AI的创作能力已经能做到日更百万字,当起点晋江上超过七成的网文作者都开始用AI辅助码字,当读者对着屏幕上几十万字的爽文分不清到底是人写的还是AI生成的——关于AI创作的讨论,早就从“…...

从CI/CD到生产回滚:Gemini嵌入Java构建链的4层审查网(含Gradle/Maven插件零侵入部署脚本)

更多请点击: https://codechina.net 第一章:Gemini Java代码审查 Google Gemini 模型(特别是 Gemini 1.5 Pro 及后续版本)已展现出对 Java 代码语义理解、缺陷识别与重构建议的强推理能力。在实际工程中,可将其集成至…...

【独家实测】ChatGPT-4 Turbo vs GPT-3.5 Turbo单位token成本对比:附Python自动核算脚本(限免24h)

更多请点击: https://codechina.net 第一章:ChatGPT API价格计算的底层逻辑与成本认知 ChatGPT API 的计费并非基于会话时长或请求次数,而是严格依据模型实际处理的 token 数量——包括输入(prompt)和输出&#xff08…...

ChatGPT API接入全流程详解:从密钥配置、请求封装到错误重试、流式响应的7步落地指南

更多请点击: https://kaifayun.com 第一章:ChatGPT API接入的前置准备与核心概念 在正式调用 ChatGPT API 之前,需完成身份认证、环境配置与服务理解三类关键准备。OpenAI 平台不再提供免费配额的永久访问权限,所有开发者必须通过…...

千问 LeetCode 2569. 更新数组后处理求和查询 TypeScript实现

这道题的核心是高效维护 nums1 的区间反转操作,因为数据规模达到 10^5,暴力反转会超时。下面给出 TypeScript 实现,采用线段树 懒标记的方案。function handleQuery(nums1: number[], nums2: number[], queries: number[][]): number[] {con…...

千问 LeetCode 2569. 更新数组后处理求和查询 Java实现

这道题的核心是高效维护nums1的区间反转操作,因为数据规模达到10^5,暴力反转会超时。需要用到线段树(区间更新区间查询)或BitSet来优化。下面给出Java实现,采用线段树 懒标记的方案:class Solution {publi…...

千问 LeetCode 2561. 重排水果 Python3实现

这道题的核心是贪心 利用全局最小值做中介交换。下面给出Python3实现,附带详细注释。from typing import List from collections import Counterclass Solution:def minCost(self, basket1: List[int], basket2: List[int]) -> int:# 1. 统计每个水果在两个篮子…...

千问 LeetCode 2565. 最少得分子序列 Java实现

这道题的核心思路是:删除t中的一个连续子串,让剩下的前缀后缀能拼成s的子序列。因为删除的区间越连续,得分(right - left 1)越小,所以我们本质上是在找最短的待删除子串长度。 下面给出Java实现&#xff…...

DeepSeek LeetCode 2561. 重排水果 Java实现

LeetCode 2561. 重排水果题目分析有两个长度为 n 的数组 basket1 和 basket2,每个数组包含若干水果。每次操作可以交换两个数组中的任意水果,花费为这两个水果中较小的那个值。目标是使两个数组中的水果种类和数量完全相同(即两个数组重排后相…...

智能指挥官 · 用 Multi-Agent 编排让 AI 团队自己干活

🧑‍💻 博主介绍 & 诚邀关注 作者:专注于 Java、Python、前端开发的技术博主 | 全网粉丝 30 万 在校期间协助导师完成毕业设计课题分类、论文格式初审及代码整理工作;工作后持续分享毕设思路,助力毕业生顺利完成…...

精准监测,畅行无阻——DX-SZ3200系列在交通领域的应用

在铁路、高速及各类交通系统中,信号监测与管理的精准性和实时性至关重要。DX-SZ3200系列数字化射频实时频谱侦测接收机模块,凭借其卓越的性能和广泛的应用场景,成为了交通领域信号监测的得力助手。DX-SZ3200系列模块集成了先进的数字化射频接…...

文献速吞兽:基于LangChain的论文辅助阅读智能体系统设计与实现

🧑‍💻 博主介绍 & 诚邀关注 作者:专注于 Java、Python、前端开发的技术博主 | 全网粉丝 30 万 在校期间协助导师完成毕业设计课题分类、论文格式初审及代码整理工作;工作后持续分享毕设思路,助力毕业生顺利完成…...

AI导演系统:编排角色扮演,让多智能体协作效率飙升10倍

🧑‍💻 博主介绍 & 诚邀关注 作者:专注于 Java、Python、前端开发的技术博主 | 全网粉丝 30 万 在校期间协助导师完成毕业设计课题分类、论文格式初审及代码整理工作;工作后持续分享毕设思路,助力毕业生顺利完成…...

【性能评估】信标辅助双跳认知无线电无线中继选择方案的性能评估研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

免费文档下载终极方案:如何优雅获取百度文库等30+平台资源

免费文档下载终极方案:如何优雅获取百度文库等30平台资源 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…...

HALAR® ECTFE光滑内壁:脱硫塔里,石膏垢为什么不贴它

苏福(深圳)科技有限公司 世索科HALAR ECTFE官方代理商一、脱硫塔结垢这事,运行维护的人最头疼湿法烟气脱硫(WFGD)系统里,脱硫塔内壁、除雾器、浆液循环管道,天天泡在含硫酸钙、亚硫酸钙的浆液里…...

超纯水管路里,那些肉眼看不见的颗粒威胁 : HALAR® ECTFE光滑内壁

苏福(深圳)科技有限公司 世索科HALAR ECTFE官方代理商 一、超纯水管路:半导体制造中最脆弱的洁净链条超纯水(UPW)是半导体晶圆制造中用量最大的工艺辅料,用于晶圆清洗、光刻后漂洗及化学品稀释。其电阻率需…...

AP‑0316 语音模组实测:降噪 + 回声消除 + 全接口,一次搞定通话对讲所有痛点

做音频通话、门禁对讲、车载会议、IPC 拾音的工程师,大概率都被这几个问题折磨过:风扇、空调、风噪、敲击声压不住,通话糊成一团喇叭音量一大就啸叫、回声炸麦,全双工根本跑不起来主板音频电路复杂,ADC/DAC/ 功放还要自…...

代码优化的10个技巧:让你的代码既高效又优雅

对于软件测试从业者而言,编写高质量的测试代码是保障测试效率、提升测试可靠性的核心基础。无论是自动化测试脚本、测试工具开发还是测试框架搭建,臃肿、低效、可读性差的代码不仅会拖慢测试执行速度,还会增加缺陷排查的难度,提升…...

CNN 卷积神经网络

1. 图像基本概念 2. CNN概述 3. 卷积层 3.1 卷积计算 卷积计算 本质上是 卷积核 和 输入数据的局部区域 间做点积; 计算规则:从左到右,从上到下; 3.1.1 Padding 填充 - 填充的像素个数 通过上面的卷积计算过程,最终的…...

Python(循环中断)

目录 1.break---终止整个循环 1.1 基本概念 1.2 基本用法示例 1.3 典型应用场景 1.4 break 与 else 的经典搭配 2. continue —— 跳过本次迭代 2.1 基本概念 2.2 基本用法示例 2.3 典型应用场景 2.4 continue与 else 3. break vs continue —— 对比总结 4. pass …...