Spring 常用注解摘要

73 阅读4分钟

一、核心注解

注解作用使用场景
@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 + @ResponseBodyREST 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 / @DeleteMappingREST 风格请求映射控制器方法
@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 / @DeleteSQL 注解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条件加载 BeanStarter 自动装配
@ConditionalOnBean / @ConditionalOnMissingBeanBean 存在/缺失时装配防止重复定义 Bean
@Profile按环境加载 Beandev/test/prod 环境隔离

十三、安全(Spring Security)

注解作用使用场景
@PreAuthorize方法调用前鉴权(支持 SpEL 表达式)基于角色/权限控制
@PostAuthorize方法执行后鉴权返回结果过滤
@Secured指定角色访问控制角色权限校验
@RolesAllowed基于角色控制访问(JSR-250 标准)权限校验

十四、生命周期与回调

注解作用使用场景
@PostConstructBean 初始化完成后执行资源初始化、缓存预热
@PreDestroyBean 销毁前执行释放资源、关闭连接