人人都会AI编程

附录 A Spring 核心注解速查表

更新时间:2026-07-10

本附录以表格形式汇总 Spring 开发中最常用的核心注解,按功能域分类并附简明说明,方便日常开发中快速查阅。

A.1 组件声明与依赖注入

| 注解 | 说明 |
|------|------|
| @Component | 通用组件注解,标记一个类为 Spring 管理的 Bean。 |
| @Service | 标记业务逻辑层组件,与 @Component 作用相同,语义更清晰。 |
| @Repository | 标记数据访问层组件,同时提供异常转换支持。 |
| @Controller | 标记 Web 控制器组件,常用于 Spring MVC。 |
| @RestController | 组合注解(@Controller + @ResponseBody),RESTful 控制器专用。 |
| @Autowired | 按类型自动注入依赖。可用于构造器、Setter、字段。 |
| @Qualifier | 配合 @Autowired,按名称指定具体注入的 Bean。 |
| @Value | 注入外部属性值(来自配置文件、环境变量等)。 |
| @Resource | JSR-250 注解,按名称注入,与 @Autowired 类似。 |
| @Inject | JSR-330 注解,按类型注入。 |

A.2 配置与 Bean 定义

| 注解 | 说明 |
|------|------|
| @Configuration | 标记 Java 配置类,相当于一个或多个 @Bean 方法的集合。 |
| @Bean | 声明一个由 Spring 容器管理的方法级 Bean。 |
| @ComponentScan | 指定扫描路径,自动发现并注册使用 @Component 等注解的类。 |
| @Import | 导入其他配置类或普通组件类。 |
| @PropertySource | 引入外部属性文件(.properties)。 |
| @Profile | 按环境条件激活 Bean 或配置类。 |
| @Conditional | 根据特定条件决定是否创建 Bean(如 @ConditionalOnClass)。 |

A.3 Spring MVC 常用注解

| 注解 | 说明 |
|------|------|
| @RequestMapping | 映射 HTTP 请求路径与方法,可限定请求方法、参数等。 |
| @GetMapping / @PostMapping | @RequestMapping 的简写,分别对应 GET/POST 请求。 |
| @PutMapping / @DeleteMapping | 对应 PUT/DELETE 请求。 |
| @PatchMapping | 对应 PATCH 请求。 |
| @PathVariable | 绑定 URL 路径变量到方法参数。 |
| @RequestParam | 绑定请求参数(查询参数或表单参数)到方法参数。 |
| @RequestBody | 绑定 HTTP 请求体到方法参数,常用于接收 JSON。 |
| @ResponseBody | 将方法返回值直接写入 HTTP 响应体(通常与 @RestController 联用)。 |
| @ModelAttribute | 绑定表单数据或模型属性到方法参数/返回值。 |
| @RequestHeader | 绑定请求头到方法参数。 |
| @CookieValue | 绑定 Cookie 值到方法参数。 |
| @ExceptionHandler | 声明全局或控制器级异常处理方法。 |
| @ControllerAdvice / @RestControllerAdvice | 全局异常处理与数据绑定增强。 |
| @InitBinder | 初始化自定义的 Web 数据绑定器。 |

A.4 事务与数据访问

| 注解 | 说明 |
|------|------|
| @Transactional | 声明式事务管理,可配置传播行为、隔离级别、只读等。 |
| @PersistenceContext | 注入 JPA EntityManager。 |
| @EnableTransactionManagement | 开启注解驱动的事务管理(Spring Boot 自动配置已包含)。 |
| @Modifying | 配合 Spring Data JPA 标记更新/删除类型的查询方法。 |
| @Query | 自定义 JPA 或 JDBC 查询语句。 |

A.5 AOP 与切面编程

| 注解 | 说明 |
|------|------|
| @Aspect | 标记一个类为切面类。 |
| @Before / @After | 前置/后置通知。 |
| @AfterReturning | 返回通知,在方法正常返回后执行。 |
| @AfterThrowing | 异常通知,在方法抛出异常后执行。 |
| @Around | 环绕通知,最灵活,可控制方法是否执行。 |
| @Pointcut | 定义可重用的切入点表达式。 |
| @Order | 指定切面或过滤器的执行顺序(值越小优先级越高)。 |

A.6 异步与定时任务

| 注解 | 说明 |
|------|------|
| @Async | 标记方法为异步执行,需配合 @EnableAsync。 |
| @EnableAsync | 开启异步方法执行支持。 |
| @Scheduled | 标记定时任务方法,支持 cron、fixedDelay、fixedRate。 |
| @EnableScheduling | 开启定时任务支持。 |

A.7 安全相关(Spring Security)

| 注解 | 说明 |
|------|------|
| @EnableWebSecurity | 开启 Web 安全配置。 |
| @Secured | 声明方法级安全,需要角色。 |
| @PreAuthorize / @PostAuthorize | 基于 SpEL 的权限控制,方法执行前/后校验。 |
| @RolesAllowed | JSR-250 注解,声明允许访问的角色。 |

A.8 缓存

| 注解 | 说明 |
|------|------|
| @Cacheable | 方法执行前先检查缓存,有则直接返回缓存值。 |
| @CacheEvict | 清除缓存。 |
| @CachePut | 无论怎样都将方法返回值放入缓存。 |
| @EnableCaching | 开启注解驱动的缓存管理。 |

A.9 测试相关

| 注解 | 说明 |
|------|------|
| @SpringBootTest | 启动完整 Spring 应用上下文的集成测试。 |
| @WebMvcTest | 仅加载 MVC 相关组件的切片测试。 |
| @DataJpaTest | 仅加载 JPA 相关组件的切片测试。 |
| @MockBean / @SpyBean | 在测试上下文中创建 Mock/Spy 并替换原有 Bean。 |
| @TestPropertySource | 指定测试用属性源。 |
| @Transactional | 在集成测试中标记事务,测试后自动回滚。 |

A.10 Spring Boot 自动配置与核心

| 注解 | 说明 |
|------|------|
| @SpringBootApplication | 组合注解(@Configuration@EnableAutoConfiguration@ComponentScan),标记主启动类。 |
| @EnableAutoConfiguration | 触发 Spring Boot 自动配置机制。 |
| @ConditionalOnClass / @ConditionalOnMissingBean | 条件注解,实现“当类存在/Bean 不存在时”自动配置。 |

以上注解覆盖了日常开发中的绝大部分场景。建议新手先重点掌握组件声明、依赖注入和 Web 层注解,再逐步扩展到事务、AOP 和安全等领域。