【持续更新】后端开发常用注解

【持续更新】后端开发常用注解

Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(https://swagger.io/)。

注解 说明
@Api 用在类上,例如Controller,表示对类的说明
@ApiModel 用在类上,例如entity、DTO、VO
@ApiModelProperty 用在属性上,描述属性信息
@ApiOperation 用在方法上,例如Controller的方法,说明方法的用途、作用

Lombok

Lombok 是 Java 后端开发中一个非常流行且实用的工具库,它通过注解的方式在编译时自动生成代码(如getter,setter,constructor等),极大地减少了冗长的样板代码,让代码更加简洁清晰。

注解 说明
@Data 复合注解,相当于同时添加了getter/setter/tostring/equalsandhash/require注解
@Value 是 @Data 的不可变版本。生成的类所有字段都是 private 和 final 的,只会生成 getter 方法,不会生成 setter。同时类本身也是 final 的。
@Getter/@Setter 可单独为类或字段生成 getter 和 setter 方法
@ToString 自动生成 toString() 方法。默认包含所有非静态字段。
@EqualsAndHashCode 自动生成 equals()hashCode() 方法。
@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor 生成一个无参构造方法/生成一个包含所有字段的构造方法/生成一个包含所有 final 字段或标记了 @NonNull 且未初始化的字段的构造方法。
@Slf4j / @Log4j / @CommonsLog 自动在类中注入一个日志对象(Logger),无需手动声明。使用场景: 在任何需要打日志的类上直接使用,最常用的是 @Slf4j。
@NonNull 标注在字段、参数或返回值上,用于生成空值检查。如果用在字段上,生成的 setter 方法会做非空检查;如果用在方法的参数上,会在方法开始处生成空检查语句。使用场景: 快速实现空值安全
@Builder // 链式调用,清晰明了
User user = User.builder() // 获取建造者
.name(“Alice”)
.email(“alice@example.com”)
.age(30) // 可选
.phone(“123456789”) // 可选
.build(); // 最终构建对象

Spring

注解 说明
@RequestBody 将HTTP请求体(Request Body)中的内容(通常是JSON或XML)绑定并反序列化到一个Java对象上。将JSON字符串解析(反序列化)成该Java对象的一个实例。
@PathVariable 用于捕获URL路径中的占位符片段,并将其作为参数传递给处理请求的控制器方法。简单来说,它让你能从美观、语义化的 URL 中获取参数,而不是从传统的查询字符串(?id=123)中获取。
@ResponseBody 向前端返回数据。方法的返回值不应被解析为视图名称,而应直接写入 HTTP 响应体(Response Body)中。
@Controller 传统的Spring MVC控制器。通常用于向前端返回视图(如JSP,Thymeleaf),但也可以配合@ResponseBody返回数据。
@RestController 专为RESTful Web服务设计的控制器。它是@Controller和@ResponseBody的组合注解。它的所有方法都默认向前端返回数据(如JSON/XML),而不是视图。
@PostMapping 是一个组合注解@RequestMapping(method = RequestMethod.POST),它专门用于将HTTP的POST请求映射到特定的处理器方法上。
@RequestMapping
@ExceptionHandler 用于统一处理控制器中抛出的异常。它的核心目的是让你能够在一个地方集中处理异常逻辑,而不是在每个控制器方法中都写一遍try-catch块,从而让代码更清晰、更易于维护。
@Configuration 类级别的注解,它表明这个类的主要目的是作为 Bean 定义的来源,其内部会包含一个或多个被 @Bean 注解的方法。可以把它理解为 XML 配置文件的 Java 替代品。
@Bean 在@Configuration注释的配置类中,使用@Bean注解的方法,其返回值会被注册为Spring应用上下文中的一个Bean。方法名默认即为 Bean 的名称。
@Component 可以实现类交给IOC容器管理。当 Spring 扫描到被 @Component 标注的类时,它会自动创建这个类的一个实例(即一个Bean),并将其纳入自己的应用上下文(ApplicationContext)中进行管理。
@Autowired 可以实现程序运行时IOC容器自动注入需要的依赖对象。IOC容器中创建、管理的对象,称之为Bean对象。
@Service @Service@Component 的一个特化(Specialization),或者说,它是一个带了特定语义的 @Component,其功能完全一样。它明确地告诉所有阅读代码的人(包括Spring本身):“这个类不是一个普通的组件,而是一个服务,是业务逻辑的核心所在地。”

Java

注解 说明
@Override 标记注解,它用于明确地告诉编译器这个方法是重写自父类(或实现的接口)中的方法,而不是一个自己新写的方法。
@JsonFormat Jackson库中一个非常常用且实用的注解,主要用于控制日期、时间、数字等类型在序列化(Java对象 -> JSON)和反序列化(JSON -> Java对象)时的格式。

自定义注解