## 一、Java内置注解 | 注解 | 作用说明 | 使用示例 | | :--------------------- | :--------------------------------------- | :-------------------------------------------- | | `@Override` | 检查方法是否正确重写父类方法,编译时验证 | `@Override public void method() {}` | | `@Deprecated` | 标记方法/类已过时,编译器会产生警告 | `@Deprecated public void oldMethod() {}` | | `@SuppressWarnings` | 抑制编译器警告 | `@SuppressWarnings("unchecked")` | | `@FunctionalInterface` | 标记接口为函数式接口(只有一个抽象方法) | `@FunctionalInterface interface Converter {}` | ## 二、元注解(用于定义注解) | 注解 | 作用说明 | 使用示例 | | :------------ | :------------------------------------- | :------------------------------------ | | `@Target` | 指定注解可以应用的目标元素类型 | `@Target(ElementType.METHOD)` | | `@Retention` | 指定注解的保留策略(源码/编译/运行时) | `@Retention(RetentionPolicy.RUNTIME)` | | `@Documented` | 表示注解应被包含在Javadoc中 | `@Documented` | | `@Inherited` | 允许子类继承父类的注解 | `@Inherited` | | `@Repeatable` | 表示注解可以在同一元素上重复使用 | `@Repeatable(Schedules.class)` | ## 三、Spring框架核心注解 ### 1、组件扫描与依赖注入 | 注解 | 作用说明 | 使用示例 | | :---------------- | :--------------------------------- | :---------------------------------------------- | | `@Component` | 通用组件注解,被Spring管理 | `@Component public class Service {}` | | `@Service` | 业务层组件注解 | `@Service public class UserService {}` | | `@Repository` | 数据访问层组件注解 | `@Repository public class UserDao {}` | | `@Controller` | Web控制层组件注解 | `@Controller public class UserController {}` | | `@RestController` | RESTful控制层,包含`@ResponseBody` | `@RestController public class ApiController {}` | | `@Autowired` | 自动依赖注入 | `@Autowired private UserService service;` | | `@Qualifier` | 按名称指定注入的Bean | `@Qualifier("userService")` | | `@Value` | 注入属性值或表达式结果 | `@Value("${app.name}")` | ### 2、配置相关注解 | 注解 | 作用说明 | 使用示例 | | :---------------- | :----------------------------- | :-------------------------------------------- | | `@Configuration` | 声明类为配置类 | `@Configuration public class AppConfig {}` | | `@Bean` | 声明方法返回的对象由Spring管理 | `@Bean public DataSource dataSource() {}` | | `@ComponentScan` | 配置组件扫描路径 | `@ComponentScan("com.example")` | | `@Profile` | 指定配置在特定环境下生效 | `@Profile("dev")` | | `@PropertySource` | 加载属性配置文件 | `@PropertySource("classpath:app.properties")` | ### 3、Web开发注解 | 注解 | 作用说明 | 使用示例 | | :---------------- | :------------------------- | :--------------------------------------- | | `@RequestMapping` | 映射HTTP请求到处理方法 | `@RequestMapping("/api/users")` | | `@GetMapping` | 映射GET请求 | `@GetMapping("/users/{id}")` | | `@PostMapping` | 映射POST请求 | `@PostMapping("/users")` | | `@PutMapping` | 映射PUT请求 | `@PutMapping("/users/{id}")` | | `@DeleteMapping` | 映射DELETE请求 | `@DeleteMapping("/users/{id}")` | | `@PathVariable` | 绑定URL路径变量 | `@PathVariable Long id` | | `@RequestParam` | 绑定请求参数 | `@RequestParam String name` | | `@RequestBody` | 绑定请求体内容 | `@RequestBody User user` | | `@ResponseBody` | 将方法返回值直接写入响应体 | `@ResponseBody public User getUser() {}` | | `@ResponseStatus` | 设置HTTP响应状态码 | `@ResponseStatus(HttpStatus.OK)` | ### 4、事务管理注解 | 注解 | 作用说明 | 使用示例 | | :--------------- | :------------- | :------------------------------------------- | | `@Transactional` | 声明式事务管理 | `@Transactional public void updateUser() {}` | ## 四、Lombok注解(代码简化) | 注解 | 作用说明 | 使用示例 | | :-------------------- | :----------------------------- | :------------------------------------- | | `@Data` | 生成getter、setter、toString等 | `@Data public class User {}` | | `@Getter/@Setter` | 分别生成getter/setter方法 | `@Getter @Setter private String name;` | | `@NoArgsConstructor` | 生成无参构造方法 | `@NoArgsConstructor` | | `@AllArgsConstructor` | 生成全参构造方法 | `@AllArgsConstructor` | | `@Builder` | 生成建造者模式方法 | `@Builder public class User {}` | | `@Slf4j` | 自动生成日志对象 | `@Slf4j public class Service {}` | ## 五、测试相关注解(JUnit) | 注解 | 作用说明 | 使用示例 | | :------------- | :------------------------- | :------------------------------------------------ | | `@Test` | 标记测试方法 | `@Test public void testMethod() {}` | | `@BeforeEach` | 每个测试方法前执行 | `@BeforeEach public void setUp() {}` | | `@AfterEach` | 每个测试方法后执行 | `@AfterEach public void tearDown() {}` | | `@BeforeAll` | 所有测试前执行(静态方法) | `@BeforeAll public static void init() {}` | | `@AfterAll` | 所有测试后执行(静态方法) | `@AfterAll public static void cleanup() {}` | | `@DisplayName` | 设置测试显示名称 | `@DisplayName("用户服务测试")` | | `@Mock` | 创建Mock对象(Mockito) | `@Mock private UserService service;` | | `@InjectMocks` | 注入Mock对象到被测试类 | `@InjectMocks private UserController controller;` | ## 六、数据持久化注解(JPA/Hibernate) | 注解 | 作用说明 | 使用示例 | | :---------------- | :--------------- | :---------------------------------------------------- | | `@Entity` | 标记类为JPA实体 | `@Entity public class User {}` | | `@Table` | 指定数据库表映射 | `@Table(name = "user_table")` | | `@Id` | 标记主键字段 | `@Id private Long id;` | | `@GeneratedValue` | 指定主键生成策略 | `@GeneratedValue(strategy = GenerationType.IDENTITY)` | | `@Column` | 指定数据库列映射 | `@Column(name = "user_name")` | | `@OneToMany` | 定义一对多关系 | `@OneToMany(mappedBy = "user")` | | `@ManyToOne` | 定义多对一关系 | `@ManyToOne @JoinColumn(name = "dept_id")` | ## 七、数据校验注解(Bean Validation) | 注解 | 作用说明 | 使用示例 | | :---------- | :--------------------- | :----------------------------------- | | `@NotNull` | 值不能为null | `@NotNull private String name;` | | `@NotEmpty` | 字符串/集合不能为空 | `@NotEmpty private String email;` | | `@NotBlank` | 字符串不能为空且长度>0 | `@NotBlank private String username;` | | `@Size` | 校验字符串/集合长度 | `@Size(min = 2, max = 10)` | | `@Email` | 校验邮箱格式 | `@Email private String email;` | | `@Min/@Max` | 校验数值范围 | `@Min(18) @Max(100)` | | `@Pattern` | 正则表达式校验 | `@Pattern(regexp = "^[a-zA-Z]+$")` | ## 八、序列化相关注解(Jackson) | 注解 | 作用说明 | 使用示例 | | :-------------- | :--------------- | :------------------------------------------- | | `@JsonIgnore` | 忽略属性序列化 | `@JsonIgnore private String password;` | | `@JsonProperty` | 指定JSON属性名 | `@JsonProperty("user_name")` | | `@JsonFormat` | 指定日期格式 | `@JsonFormat(pattern = "yyyy-MM-dd")` | | `@JsonInclude` | 控制空值包含策略 | `@JsonInclude(JsonInclude.Include.NON_NULL)` | Loading... ## 一、Java内置注解 | 注解 | 作用说明 | 使用示例 | | :--------------------- | :--------------------------------------- | :-------------------------------------------- | | `@Override` | 检查方法是否正确重写父类方法,编译时验证 | `@Override public void method() {}` | | `@Deprecated` | 标记方法/类已过时,编译器会产生警告 | `@Deprecated public void oldMethod() {}` | | `@SuppressWarnings` | 抑制编译器警告 | `@SuppressWarnings("unchecked")` | | `@FunctionalInterface` | 标记接口为函数式接口(只有一个抽象方法) | `@FunctionalInterface interface Converter {}` | ## 二、元注解(用于定义注解) | 注解 | 作用说明 | 使用示例 | | :------------ | :------------------------------------- | :------------------------------------ | | `@Target` | 指定注解可以应用的目标元素类型 | `@Target(ElementType.METHOD)` | | `@Retention` | 指定注解的保留策略(源码/编译/运行时) | `@Retention(RetentionPolicy.RUNTIME)` | | `@Documented` | 表示注解应被包含在Javadoc中 | `@Documented` | | `@Inherited` | 允许子类继承父类的注解 | `@Inherited` | | `@Repeatable` | 表示注解可以在同一元素上重复使用 | `@Repeatable(Schedules.class)` | ## 三、Spring框架核心注解 ### 1、组件扫描与依赖注入 | 注解 | 作用说明 | 使用示例 | | :---------------- | :--------------------------------- | :---------------------------------------------- | | `@Component` | 通用组件注解,被Spring管理 | `@Component public class Service {}` | | `@Service` | 业务层组件注解 | `@Service public class UserService {}` | | `@Repository` | 数据访问层组件注解 | `@Repository public class UserDao {}` | | `@Controller` | Web控制层组件注解 | `@Controller public class UserController {}` | | `@RestController` | RESTful控制层,包含`@ResponseBody` | `@RestController public class ApiController {}` | | `@Autowired` | 自动依赖注入 | `@Autowired private UserService service;` | | `@Qualifier` | 按名称指定注入的Bean | `@Qualifier("userService")` | | `@Value` | 注入属性值或表达式结果 | `@Value("${app.name}")` | ### 2、配置相关注解 | 注解 | 作用说明 | 使用示例 | | :---------------- | :----------------------------- | :-------------------------------------------- | | `@Configuration` | 声明类为配置类 | `@Configuration public class AppConfig {}` | | `@Bean` | 声明方法返回的对象由Spring管理 | `@Bean public DataSource dataSource() {}` | | `@ComponentScan` | 配置组件扫描路径 | `@ComponentScan("com.example")` | | `@Profile` | 指定配置在特定环境下生效 | `@Profile("dev")` | | `@PropertySource` | 加载属性配置文件 | `@PropertySource("classpath:app.properties")` | ### 3、Web开发注解 | 注解 | 作用说明 | 使用示例 | | :---------------- | :------------------------- | :--------------------------------------- | | `@RequestMapping` | 映射HTTP请求到处理方法 | `@RequestMapping("/api/users")` | | `@GetMapping` | 映射GET请求 | `@GetMapping("/users/{id}")` | | `@PostMapping` | 映射POST请求 | `@PostMapping("/users")` | | `@PutMapping` | 映射PUT请求 | `@PutMapping("/users/{id}")` | | `@DeleteMapping` | 映射DELETE请求 | `@DeleteMapping("/users/{id}")` | | `@PathVariable` | 绑定URL路径变量 | `@PathVariable Long id` | | `@RequestParam` | 绑定请求参数 | `@RequestParam String name` | | `@RequestBody` | 绑定请求体内容 | `@RequestBody User user` | | `@ResponseBody` | 将方法返回值直接写入响应体 | `@ResponseBody public User getUser() {}` | | `@ResponseStatus` | 设置HTTP响应状态码 | `@ResponseStatus(HttpStatus.OK)` | ### 4、事务管理注解 | 注解 | 作用说明 | 使用示例 | | :--------------- | :------------- | :------------------------------------------- | | `@Transactional` | 声明式事务管理 | `@Transactional public void updateUser() {}` | ## 四、Lombok注解(代码简化) | 注解 | 作用说明 | 使用示例 | | :-------------------- | :----------------------------- | :------------------------------------- | | `@Data` | 生成getter、setter、toString等 | `@Data public class User {}` | | `@Getter/@Setter` | 分别生成getter/setter方法 | `@Getter @Setter private String name;` | | `@NoArgsConstructor` | 生成无参构造方法 | `@NoArgsConstructor` | | `@AllArgsConstructor` | 生成全参构造方法 | `@AllArgsConstructor` | | `@Builder` | 生成建造者模式方法 | `@Builder public class User {}` | | `@Slf4j` | 自动生成日志对象 | `@Slf4j public class Service {}` | ## 五、测试相关注解(JUnit) | 注解 | 作用说明 | 使用示例 | | :------------- | :------------------------- | :------------------------------------------------ | | `@Test` | 标记测试方法 | `@Test public void testMethod() {}` | | `@BeforeEach` | 每个测试方法前执行 | `@BeforeEach public void setUp() {}` | | `@AfterEach` | 每个测试方法后执行 | `@AfterEach public void tearDown() {}` | | `@BeforeAll` | 所有测试前执行(静态方法) | `@BeforeAll public static void init() {}` | | `@AfterAll` | 所有测试后执行(静态方法) | `@AfterAll public static void cleanup() {}` | | `@DisplayName` | 设置测试显示名称 | `@DisplayName("用户服务测试")` | | `@Mock` | 创建Mock对象(Mockito) | `@Mock private UserService service;` | | `@InjectMocks` | 注入Mock对象到被测试类 | `@InjectMocks private UserController controller;` | ## 六、数据持久化注解(JPA/Hibernate) | 注解 | 作用说明 | 使用示例 | | :---------------- | :--------------- | :---------------------------------------------------- | | `@Entity` | 标记类为JPA实体 | `@Entity public class User {}` | | `@Table` | 指定数据库表映射 | `@Table(name = "user_table")` | | `@Id` | 标记主键字段 | `@Id private Long id;` | | `@GeneratedValue` | 指定主键生成策略 | `@GeneratedValue(strategy = GenerationType.IDENTITY)` | | `@Column` | 指定数据库列映射 | `@Column(name = "user_name")` | | `@OneToMany` | 定义一对多关系 | `@OneToMany(mappedBy = "user")` | | `@ManyToOne` | 定义多对一关系 | `@ManyToOne @JoinColumn(name = "dept_id")` | ## 七、数据校验注解(Bean Validation) | 注解 | 作用说明 | 使用示例 | | :---------- | :--------------------- | :----------------------------------- | | `@NotNull` | 值不能为null | `@NotNull private String name;` | | `@NotEmpty` | 字符串/集合不能为空 | `@NotEmpty private String email;` | | `@NotBlank` | 字符串不能为空且长度>0 | `@NotBlank private String username;` | | `@Size` | 校验字符串/集合长度 | `@Size(min = 2, max = 10)` | | `@Email` | 校验邮箱格式 | `@Email private String email;` | | `@Min/@Max` | 校验数值范围 | `@Min(18) @Max(100)` | | `@Pattern` | 正则表达式校验 | `@Pattern(regexp = "^[a-zA-Z]+$")` | ## 八、序列化相关注解(Jackson) | 注解 | 作用说明 | 使用示例 | | :-------------- | :--------------- | :------------------------------------------- | | `@JsonIgnore` | 忽略属性序列化 | `@JsonIgnore private String password;` | | `@JsonProperty` | 指定JSON属性名 | `@JsonProperty("user_name")` | | `@JsonFormat` | 指定日期格式 | `@JsonFormat(pattern = "yyyy-MM-dd")` | | `@JsonInclude` | 控制空值包含策略 | `@JsonInclude(JsonInclude.Include.NON_NULL)` | 最后修改:2025 年 10 月 18 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。