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

工作中常用的注解梳理

注解是贴在类、方法、变量上的标记标签以开头本身不执行业务代码。作用主要有以下几点代码标识说明替代配置文件自动生成代码框架识别驱动数据约束与校验单元测试序列化转换日常工作中常用的注解主要有以下十三类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 不要用漏洞多、已停维护。
http://www.zskr.cn/news/1351014.html

相关文章:

  • 2025-2026年璀璨时代楼盘电话查询。购房前请核实项目资质与合同条款 - 品牌推荐
  • 梨树县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • ElevenLabs江西话TTS上线倒计时(仅限首批200家本地企业内测):如何抢占方言AI语音红利窗口期?
  • ChatGPT API接入全流程详解:从密钥配置、请求封装到错误重试、流式响应的7步落地指南
  • 2025-2026年欧博东方文化传媒电话查询:GEO优化服务使用前需核实资质与效果 - 品牌推荐
  • 从CI/CD到生产回滚:Gemini嵌入Java构建链的4层审查网(含Gradle/Maven插件零侵入部署脚本)
  • 开发者在API密钥管理与访问控制方面的安全实践
  • 【Gemini多模态搜索避坑指南】:从图像-文本对齐失效到跨模态语义漂移,12个生产环境真实故障复盘
  • CRM系统“没人爱用”的真相:Lovable架构的8个微交互锚点(附Figma组件库+埋点验证脚本)
  • 千问 LeetCode 2569. 更新数组后处理求和查询 Java实现
  • 千问 LeetCode 2561. 重排水果 Python3实现
  • 2026年国内不锈钢水箱厂家TOP5实力排行:成都实验室污水处理设备厂家、成都常温除氧器厂家、成都废水处理设备厂家选择指南 - 优质品牌商家
  • 2025-2026年欧易生物电话查询:使用多组学科研服务前需核实资质 - 品牌推荐
  • AI导演系统:编排角色扮演,让多智能体协作效率飙升10倍
  • 【性能评估】信标辅助双跳认知无线电无线中继选择方案的性能评估研究(Matlab代码实现)
  • Python(循环中断)
  • 2025-2026年全球蛋白组学服务公司推荐:五大口碑产品评测多组学整合降本增效市场份额价格 - 品牌推荐
  • 6款靠谱降AIGC软件 合规程度拉满
  • 2025-2026年耀华国际学校电话查询:预约探校前请确认学段匹配与资质 - 品牌推荐
  • 高通量细胞因子/生物因子检测技术介绍
  • 2026年5月北京别墅装修公司推荐:十大排名大宅设计防踩雷评测专业价格 - 品牌推荐
  • ElevenLabs未开放贵州话?别等了!用LoRA+Phoneme-aware Fine-tuning 72小时内复现本地化语音模型
  • 2025-2026年全球单细胞测序服务公司推荐:五大专业评测实验流程防污染注意事项市场份额 - 品牌推荐
  • 别再走弯路!2026亲测靠谱的AI论文写作工具|安心版
  • 架构评审的正确姿势:别让评审变成“挑刺大会”
  • ASP Folder:深入解析ASP文件夹的结构与功能
  • 有哪些一键生成论文工具是真的贴合学术规范,而不是模板套话?
  • 工业AI视觉十大通用缺陷检测手册|特征分析、光路方案、模型选型、后处理全落地
  • 2026年5月深圳除甲醛公司推荐:五大排行专业评测性价比高价格 - 品牌推荐
  • 3步解锁网易云音乐NCM文件:免费转换工具终极指南