Skip to content

Spring Boot 注解速查手册

本文汇总 Spring Boot 2.7.x 业务开发中最常用的注解及其参数。

一、启动与核心注解

注解参数说明
@SpringBootApplicationexclude, excludeName, scanBasePackages组合:@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
@EnableAutoConfigurationexclude, excludeName启用自动配置,排除指定配置类用 exclude
@ComponentScanbasePackages, basePackageClasses, includeFilters, excludeFilters指定组件扫描范围

二、Controller & Web 层注解

注解关键参数说明
@RestControllervalue(Bean 名)@Controller + @ResponseBody,返回 JSON
@Controllervalue传统 MVC 控制器,返回视图名
@RequestMappingvalue/path, method, params, headers, consumes, produces通用请求映射
@GetMappingvalue/path, params, headers, consumes, producesGET 请求映射
@PostMapping同上POST 请求映射
@PutMapping同上PUT 请求映射
@DeleteMapping同上DELETE 请求映射
@PatchMapping同上PATCH 请求映射
@PathVariablevalue/name, required(默认 true)提取 URL 路径中的变量
@RequestParamvalue/name, required(默认 true), defaultValue提取查询参数
@RequestBodyrequired(默认 true)将请求体 JSON 反序列化为 Java 对象
@RequestHeadervalue/name, required(默认 true)提取 HTTP 请求头
@CookieValuevalue/name, required(默认 true)提取 Cookie
@RequestAttributevalue/name, required(默认 true)提取 request 域属性
@ModelAttributevalue/name, binding绑定或添加 Model 数据
@ResponseBody返回值写入响应体
@ResponseStatusvalue(HttpStatus), code, reason自定义 HTTP 响应状态码
@CrossOriginorigins, methods, allowedHeaders, allowCredentials, maxAge跨域访问
@InitBindervalue自定义参数绑定器
@Valid触发 JSR-303 校验(参数校验)
@Validatedvalue(分组接口)Spring 校验注解,支持分组校验

三、Filter & Interceptor 注解

注解 / 类关键参数说明
@WebFilterfilterName, urlPatterns, initParams, dispatcherTypes声明式 Filter 注册(需配合 @ServletComponentScan
@ServletComponentScanbasePackages, value扫描 @WebFilter@WebListener
@Ordervalue(int)控制拦截器执行顺序
OncePerRequestFilterSpring 提供,保证单次过滤
WebMvcConfigurer通过 addInterceptors() 注册拦截器
HandlerInterceptor拦截器接口:preHandle/postHandle/afterCompletion

四、异常处理注解

注解关键参数说明
@ControllerAdvicebasePackages, basePackageClasses, assignableTypes, annotations全局 Controller 异常增强
@RestControllerAdvice同上@ControllerAdvice + @ResponseBody
@ExceptionHandlervalue(Class<?>[])声明处理何种异常
@ResponseStatusvalue, reason标注在异常类上,指定 HTTP 状态码

五、事务注解

注解关键参数说明
@Transactional见下方声明式事务
@EnableTransactionManagementproxyTargetClass, mode, order手动启用事务管理(Spring Boot 已自动)

@Transactional 完整参数

参数类型默认值
propagationPropagationREQUIRED
isolationIsolationDEFAULT
timeoutint-1(不超时)
readOnlybooleanfalse
rollbackForClass<?>[]{}
noRollbackForClass<?>[]{}
transactionManagerString""

六、AOP 注解

注解关键参数说明
@Aspectvalue声明切面类
@Pointcutvalue(表达式)定义切入点
@Beforevalue/pointcut前置通知
@Aftervalue/pointcut后置通知(finally)
@AfterReturningvalue/pointcut, returning(绑定返回值)返回通知
@AfterThrowingvalue/pointcut, throwing(绑定异常)异常通知
@Aroundvalue/pointcut环绕通知
@Ordervalue(int)切面执行顺序

七、Bean 管理注解

注解关键参数说明
@Componentvalue(Bean 名)通用 Bean 组件
@Servicevalue业务层 Bean
@Repositoryvalue数据访问层 Bean,异常翻译
@Controllervalue控制器 Bean
@Beanname/value, initMethod, destroyMethod, autowireCandidate方法级 Bean 声明
@ConfigurationproxyBeanMethods(默认 true), value配置类
@Autowiredrequired(默认 true)按类型自动装配
@Qualifiervalue(Bean 名)按名称精确装配
@Primary标记首选 Bean
@Resourcename, type, lookup, authenticationTypeJSR-250 注入
@Scopevalue(scopeName), proxyModeBean 作用域
@Lazyvalue(默认 true)延迟初始化
@PostConstruct初始化回调
@PreDestroy销毁回调
@DependsOnvalue(bean names)声明 Bean 依赖顺序

八、配置与属性注解

注解关键参数说明
@Valuevalue(SpEL)注入单个属性
@ConfigurationPropertiesprefix, ignoreInvalidFields, ignoreUnknownFields批量绑定配置
@EnableConfigurationPropertiesvalue(Class<?>[])启用指定配置类
@Profilevalue(profile name)环境条件注解
@PropertySourcevalue(path), ignoreResourceNotFound, encoding加载自定义 properties
@ConditionalOnClassvalue, nameclasspath 条件
@ConditionalOnMissingClassvalue, name类缺失条件
@ConditionalOnBeanvalue, type, name, search, parameterizedContainerBean 存在条件
@ConditionalOnMissingBean同上Bean 缺失条件
@ConditionalOnPropertyname, prefix, havingValue, matchIfMissing属性条件
@ConditionalOnExpressionvalue(SpEL)SpEL 表达式条件
@ConditionalOnWebApplicationtype (SERVLET/REACTIVE/ANY)Web 环境条件

九、任务调度注解

注解关键参数说明
@Scheduledcron, fixedDelay, fixedRate, initialDelay, timeUnit定时任务
@EnableScheduling启用定时任务
@Asyncvalue(线程池名称)异步方法
@EnableAsyncproxyTargetClass, mode, order启用异步执行

十、其他常用注解

注解说明
@SpringBootTest集成测试
@DataJpaTestJPA 测试(自动回滚)
@JdbcTestJDBC 测试(自动回滚)
@WebMvcTestMVC 切片测试
@MockBeanMockito Mock Bean
@SpyBeanMockito Spy Bean
@Slf4jLombok 日志
@DataLombok: @Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor
@BuilderLombok: 建造者模式
@AllArgsConstructorLombok: 全参构造
@NoArgsConstructorLombok: 无参构造
最近更新