核心容器与配置
| 注解 | 说明 |
|---|---|
@Configuration |
标记类为配置类,替代 XML 配置 |
@Bean |
在配置类中声明一个 Bean,由 Spring 容器管理 |
@Component |
通用组件注解,标记类为 Spring 管理的 Bean |
@ComponentScan |
自动扫描并注册指定包下的组件(如@Component、@Service等) |
@Import |
导入其他配置类或组件(如@Configuration类) |
@PropertySource |
加载外部属性文件(如.properties或.yml) |
@Lazy |
延迟初始化 Bean |
@Scope |
定义 Bean 的作用域(如singleton 、prototype 、request等) |
@DependsOn |
指定当前 Bean 依赖的其他 Bean,确保初始化顺序 |
@Profile |
指定 Bean 或配置仅在特定环境下生效(如dev、prod) |
@Conditional |
基于条件决定是否注册 Bean(自定义条件逻辑) |
@Service |
标记服务层组件(@Component的特化) |
@Repository |
标记数据访问层组件(@Component的特化),支持异常转换 |
@Controller |
标记 MVC 控制器组件(@Component的特化) |
@Role |
定义 Bean 的角色(如ROLE_APPLICATION 、ROLE_INFRASTRUCTURE) |
@Description |
为 Bean 添加描述信息(通常用于监控或文档) |
@PropertySources |
组合多个@PropertySource |
@ImportResource |
导入 XML 配置文件 |
@Order |
定义 Bean 的加载顺序(值越小优先级越高) |
@AliasFor |
为注解属性声明别名(用于元注解组合) |
@RequestScope |
定义 Bean 的作用域为 HTTP 请求级别 |
@SessionScope |
定义 Bean 的作用域为 HTTP 会话级别 |
@ApplicationScope |
定义 Bean 的作用域为 ServletContext 级别 |
依赖注入(DI)
| 注解 | 说明 |
|---|---|
@Autowired |
自动注入依赖(默认按类型匹配) |
@Qualifier |
按名称指定注入的 Bean,配合@Autowired使用 |
@Primary |
当存在多个同类型 Bean 时,优先注入被标记的 Bean |
@Value |
注入属性值(如@Value("${key}")或 SpEL 表达式) |
@Required |
标记 Bean 属性为必需(已过时,推荐使用构造器注入) |
@Lookup |
声明查找方法,用于获取原型作用域的 Bean |
@Resource |
JSR-250 注解,按名称注入依赖(类似@Autowired + @Qualifier) |
@Inject |
JSR-330 注解(需引入javax.inject),功能类似@Autowired |
AOP 与切面编程
| 注解 | 说明 |
|---|---|
@Aspect |
标记类为切面类 |
@Pointcut |
定义切点表达式,指定切入点 |
@Before |
在目标方法执行前执行 |
@After |
在目标方法执行后执行(无论是否抛出异常) |
@AfterReturning |
在目标方法成功返回后执行 |
@AfterThrowing |
在目标方法抛出异常后执行 |
@Around |
环绕通知,可完全控制目标方法执行 |
@EnableAspectJAutoProxy |
启用 AspectJ 自动代理(需配合@Configuration) |
@DeclareParents |
引入其他接口到目标类(实现接口增强) |
数据访问与事务
| 注解 | 说明 |
|---|---|
@Transactional |
声明事务管理(类或方法级别),可配置隔离级别、传播行为等 |
@Repository |
标记数据访问层(DAO)组件,支持异常转换(如将 SQL 异常转换为 Spring 异常) |
@PersistenceContext |
注入 JPA 的EntityManager |
@PersistenceUnit |
注入 JPA 的EntityManagerFactory |
@Sql |
在测试方法执行前 / 后运行 SQL 脚本 |
@SqlMergeMode |
控制测试类与方法的@Sql注解合并方式 |
Web/MVC 相关
| 注解 | 说明 |
|---|---|
@Controller |
标记类为 MVC 控制器 |
@RequestMapping |
映射 HTTP 请求路径(支持method 、produces等属性) |
@RequestParam |
绑定请求参数到方法参数 |
@PathVariable |
绑定 URL 路径变量到方法参数 |
@RequestBody |
将请求体反序列化为对象(如 JSON/XML) |
@ResponseBody |
将方法返回值序列化为响应体(如 JSON) |
@ModelAttribute |
绑定请求参数到模型对象,或添加模型数据 |
@SessionAttributes |
将模型属性存储到 HTTP Session 中 |
@CookieValue |
绑定 Cookie 值到方法参数 |
@RequestHeader |
绑定请求头到方法参数 |
@ExceptionHandler |
处理控制器内的异常 |
@ControllerAdvice |
全局异常处理类,可结合@ExceptionHandler |
@InitBinder |
自定义请求参数绑定逻辑 |
@CrossOrigin |
允许跨域请求(Spring 4.2 + 支持) |
@RestController |
组合@Controller和@ResponseBody(Spring 4.0+) |
@GetMapping/@PostMapping |
@RequestMapping的快捷方式(如@GetMapping("/path")) |
@PutMapping |
@RequestMapping(method = PUT)的快捷方式 |
@DeleteMapping |
@RequestMapping(method = DELETE)的快捷方式 |
@PatchMapping |
@RequestMapping(method = PATCH)的快捷方式 |
@MatrixVariable |
绑定 URL 矩阵变量(如/users;id=1) |
@RestControllerAdvice |
组合@ControllerAdvice和@ResponseBody |
@ResponseStatus |
定义 HTTP 响应状态码(如@ResponseStatus(HttpStatus.NOT_FOUND)) |
测试相关
| 注解 | 说明 |
|---|---|
@ContextConfiguration |
指定测试类的 Spring 配置(如 XML 或配置类) |
@WebAppConfiguration |
标记测试类需要加载 Web 应用上下文 |
@DirtiesContext |
标记测试后需要重置 Spring 上下文 |
@TestExecutionListeners |
自定义测试执行监听器 |
@TestPropertySource |
为测试类指定属性文件或键值对 |
@DynamicPropertySource |
动态注册测试属性(如集成测试中的数据库端口) |
@Sql |
在测试方法执行前 / 后运行 SQL 脚本 |
事件与异步
| 注解 | 说明 |
|---|---|
@EventListener |
标记方法为事件监听器(监听 Spring 事件) |
@Async |
标记方法为异步执行(需启用@EnableAsync) |
@EnableAsync |
启用异步方法执行支持 |
@Scheduled |
定义定时任务(需启用@EnableScheduling) |
@EnableScheduling |
启用定时任务支持 |
消息与 WebSocket
| 注解 | 说明 |
|---|---|
@MessageMapping |
映射消息到处理方法(如 WebSocket 消息) |
@SubscribeMapping |
处理订阅请求(如 STOMP 协议) |
@SendTo |
指定方法返回值的发送目标(如广播消息) |
@DestinationVariable |
绑定消息目标路径中的变量 |
@MessageExceptionHandler |
处理消息处理过程中的异常 |
缓存相关
| 注解 | 说明 |
|---|---|
@Cacheable |
缓存方法结果(需启用@EnableCaching) |
@CachePut |
更新缓存 |
@CacheEvict |
清除缓存 |
@Caching |
组合多个缓存操作 |
@CacheConfig |
在类级别统一配置缓存属性 |
@EnableCaching |
启用缓存支持 |
校验与格式化
| 注解 | 说明 |
|---|---|
@Valid |
触发 Bean 验证(JSR-303/JSR-349 规范,需引入 Hibernate Validator) |
@Validated |
Spring 的校验注解,支持分组校验 |
@DateTimeFormat |
格式化日期时间字段(如@DateTimeFormat(pattern = "yyyy-MM-dd")) |
@NumberFormat |
格式化数字字段 |
JSR 标准注解支持
| 注解 | 说明 |
|---|---|
@PostConstruct |
JSR-250 注解,标记 Bean 初始化后执行的方法 |
@PreDestroy |
JSR-250 注解,标记 Bean 销毁前执行的方法 |
@Resource |
JSR-250 注解,按名称注入依赖(类似@Autowired + @Qualifier) |
@Inject |
JSR-330 注解(需引入javax.inject),功能类似@Autowired |
@Named |
JSR-330 注解,功能类似@Component或@Qualifier |
空安全注解
| 注解 | 说明 |
|---|---|
@NonNull |
标记字段、参数或返回值不可为null(编译时检查) |
@Nullable |
标记字段、参数或返回值可为null |
@NonNullApi |
包级别注解,默认所有参数和返回值不可为null |
@NonNullFields |
包级别注解,默认所有字段不可为null |
响应式编程(WebFlux)
| 注解 | 说明 |
|---|---|
@WebFluxTest |
针对 WebFlux 控制器的切片测试 |
@EnableWebFlux |
启用 WebFlux 配置(替代@EnableWebMvc) |
国际化与资源
| 注解 | 说明 |
|---|---|
@MessageSource |
注入国际化消息源(需配置ResourceBundleMessageSource) |
浙公网安备 33010602011771号