工作中常用的注解梳理

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