一、核心注解
| 注解 | 作用 | 使用场景 |
|---|---|---|
@SpringBootApplication | 标记 Spring Boot 启动类,包含 @Configuration、@EnableAutoConfiguration、@ComponentScan | 启动 Spring Boot 应用 |
@Configuration | 声明配置类 | 定义 Bean 或配置 |
@Bean | 声明方法返回值为 Spring 管理的 Bean | 配置类中注册 Bean |
@Component | 将普通类注册为 Spring Bean | 通用组件 |
@Service | 标注服务层 Bean | 业务逻辑类 |
@Repository | 标注持久层 Bean,并进行异常转换 | DAO/Mapper 类 |
@Controller | 标注控制器 | MVC 控制器 |
@RestController | 相当于 @Controller + @ResponseBody | REST API 控制器 |
二、依赖注入
| 注解 | 作用 | 使用场景 |
|---|---|---|
@Autowired | 自动注入 Bean | 构造器、字段、方法注入 |
@Resource | 按名称注入 Bean(JSR-250) | 需要按名称匹配 Bean |
@Qualifier | 指定注入 Bean 的名称 | 当多个 Bean 同类型时使用 |
@Value | 注入配置值 | 注入 application.properties 或 YAML 配置 |
三、事务管理
| 注解 | 作用 | 使用场景 |
|---|---|---|
@Transactional | 声明事务,支持回滚 | 方法级事务控制 |
四、AOP / 切面
| 注解 | 作用 | 使用场景 |
|---|---|---|
@Aspect | 声明切面类 | 定义切面逻辑 |
@Before / @After / @Around | 定义切入点通知 | 切面方法前、后、环绕执行 |
@Pointcut | 定义切入点表达式 | 配合通知使用 |
五、Spring MVC 相关
| 注解 | 作用 | 使用场景 |
|---|---|---|
@RequestMapping | 映射请求路径 | 控制器方法或类 |
@GetMapping / @PostMapping / @PutMapping / @DeleteMapping | REST 风格请求映射 | 控制器方法 |
@RequestParam | 接收请求参数 | 方法参数绑定 |
@PathVariable | 接收路径变量 | RESTful API |
@RequestBody | 接收 JSON 请求体 | 方法参数绑定 |
@ResponseBody | 返回 JSON 或字符串 | 方法返回值序列化 |
六、Spring Data / MyBatis
| 注解 | 作用 | 使用场景 |
|---|---|---|
@Entity | 声明 JPA 实体类 | 数据库映射 |
@Table | 指定数据库表名 | JPA 实体类 |
@Id | 声明主键 | JPA 实体类 |
@GeneratedValue | 主键生成策略 | JPA 实体类 |
@Mapper | 声明 MyBatis Mapper 接口 | MyBatis Mapper |
@Select / @Insert / @Update / @Delete | SQL 注解 | MyBatis Mapper 方法 |
七、JSON / 数据处理
| 注解 | 作用 | 使用场景 |
|---|---|---|
@JsonIgnore | 忽略字段序列化/反序列化 | Jackson JSON 输出 |
@JsonIgnoreProperties | 类级别忽略字段 | Jackson JSON 输出 |
@JsonFormat | 格式化日期或时间 | Jackson JSON 输出 |
@JsonUnwrapped | 扁平化嵌套对象 | Jackson JSON 输出 |
八、测试相关
| 注解 | 作用 | 使用场景 |
|---|---|---|
@SpringBootTest | 加载 Spring Boot 上下文 | 集成测试 |
@ActiveProfiles | 指定测试使用的配置文件 | 测试环境隔离 |
@Test | 声明测试方法 | 单元/集成测试 |
@Transactional | 测试方法事务回滚 | 数据库测试 |
@WithMockUser | 模拟 Spring Security 用户 | 安全接口测试 |
九、参数校验(JSR 303/JSR 380)
| 注解 | 作用 | 使用场景 |
|---|---|---|
| @NotNull / @NotEmpty / @NotBlank | 校验字段不为空 | 表单参数、DTO 校验 |
| @Size(min, max) | 校验字符串、集合长度 | 密码长度、列表大小限制 |
| @Min / @Max | 校验数值范围 | 年龄、价格等数值字段 |
| @Pattern | 校验正则表达式 | 手机号、邮箱格式 |
| @Valid / @Validated | 启用嵌套对象或分组校验 | Controller 方法参数 |
十、异步与任务调度
| 注解 | 作用 | 使用场景 |
|---|---|---|
| @EnableAsync | 开启异步方法支持 | 配置类上启用异步 |
| @Async | 将方法异步执行 | 异步任务执行、发送邮件 |
| @EnableScheduling | 开启定时任务支持 | 配置类上启用调度 |
| @Scheduled | 定义定时任务(cron/fixedRate/fixedDelay) | 定时清理任务、自动同步数据 |
十一、缓存相关
| 注解 | 作用 | 使用场景 |
|---|---|---|
| @EnableCaching | 开启缓存支持 | 启动类或配置类 |
| @Cacheable | 方法结果缓存 | 查询结果缓存 |
| @CachePut | 更新缓存 | 更新数据库时刷新缓存 |
| @CacheEvict | 移除缓存 | 删除数据时清除缓存 |
十二、配置与条件装配
| 注解 | 作用 | 使用场景 |
|---|---|---|
| @ConditionalOnProperty | 根据配置属性决定是否加载 Bean | 开启/关闭某功能 |
| @ConditionalOnClass / @ConditionalOnMissingClass | 条件加载 Bean | Starter 自动装配 |
| @ConditionalOnBean / @ConditionalOnMissingBean | Bean 存在/缺失时装配 | 防止重复定义 Bean |
| @Profile | 按环境加载 Bean | dev/test/prod 环境隔离 |
十三、安全(Spring Security)
| 注解 | 作用 | 使用场景 |
|---|---|---|
| @PreAuthorize | 方法调用前鉴权(支持 SpEL 表达式) | 基于角色/权限控制 |
| @PostAuthorize | 方法执行后鉴权 | 返回结果过滤 |
| @Secured | 指定角色访问控制 | 角色权限校验 |
| @RolesAllowed | 基于角色控制访问(JSR-250 标准) | 权限校验 |
十四、生命周期与回调
| 注解 | 作用 | 使用场景 |
|---|---|---|
| @PostConstruct | Bean 初始化完成后执行 | 资源初始化、缓存预热 |
| @PreDestroy | Bean 销毁前执行 | 释放资源、关闭连接 |