Spring Boot常用注解有哪些?

摘要:大家好,我是晓凡。 以下是 Spring Boot 中最常用的 100 个注解(按功能分类整理),适用于配置、控制层、数据访问、安全、测试等常见场景: 🧱 一、核心注解(Core Annotations) @
大家好,我是晓凡。 以下是 Spring Boot 中最常用的 100 个注解(按功能分类整理),适用于配置、控制层、数据访问、安全、测试等常见场景: 🧱 一、核心注解(Core Annotations) @SpringBootApplication:标记主类,启用自动配置和组件扫描。 @Component:通用组件,自动扫描注入 Spring 容器。 @Service:业务逻辑层组件。 @Repository:数据访问层组件,自动处理异常。 @Configuration:声明配置类,替代 XML 配置。 @Bean:在配置类中定义一个 Bean。 @ComponentScan:指定 Spring 要扫描的包路径。 @PropertySource:加载外部属性文件。 @Value:注入属性值。 @Autowired:自动装配 Bean。 @Qualifier:配合 @Autowired 解决多个同类型 Bean 冲突。 @Primary:标记首选 Bean。 @Scope:定义 Bean 的作用域(如 prototype、singleton)。 @Lazy:延迟初始化 Bean。 @Profile:根据环境激活配置。 🌐 二、Web 相关(Web & REST) @RestController:组合 @Controller + @ResponseBody。 @Controller:定义控制器类,返回视图名称。 @RequestMapping:映射请求 URL 到类或方法。 @GetMapping:映射 GET 请求。 @PostMapping:映射 POST 请求。 @PutMapping:映射 PUT 请求。 @DeleteMapping:映射 DELETE 请求。 @PatchMapping:映射 PATCH 请求。 @PathVariable:获取 URL 中的变量。 @RequestParam:绑定请求参数。 @RequestBody:将请求体转为对象。 @ResponseBody:将返回值直接写入 HTTP 响应体。 @RequestHeader:获取请求头信息。 @CookieValue:获取 Cookie 值。 @SessionAttribute:从会话中获取属性。 @CrossOrigin:允许跨域请求。 @ResponseStatus:设置响应状态码。 @ExceptionHandler:处理控制器内异常。 @ControllerAdvice:全局异常处理器。 @RestControllerAdvice:结合 @ControllerAdvice 和 @ResponseBody。 @Valid:触发对 Bean 的校验。 @InitBinder:用于自定义数据绑定与验证规则。 💾 三、数据访问(Data Access / JPA / MyBatis) @Entity:JPA 实体类。 @Table:指定实体对应的数据库表名。 @Id:标识主键字段。 @GeneratedValue:主键自动生成策略。 @Column:映射字段到数据库列。 @Transient:忽略该字段持久化。 @OneToOne:一对一关联。 @OneToMany:一对多关联。 @ManyToOne:多对一关联。 @ManyToMany:多对多关联。 @JoinColumn:指定外键字段。 @JoinTable:多对多关系中的连接表。 @Query:自定义 JPQL 或原生 SQL 查询。 @Modifying:执行更新操作。 @Transactional:声明事务边界。 @EnableJpaRepositories:启用 JPA Repository 扫描。 @RepositoryRestResource:暴露 Repository 为 REST 接口。 @Select:MyBatis 查询注解。 @Insert:MyBatis 插入注解。 @Update:MyBatis 更新注解。 @Delete:MyBatis 删除注解。 @Options:MyBatis 操作选项,如生成主键。 @Results:结果映射。 @ResultMap:引用已有的结果映射。 @Param:命名参数传递给 SQL。 @Mapper:标记接口为 MyBatis Mapper。 @MapperScan:启用 MyBatis Mapper 扫描。 @EnableTransactionManagement:启用事务管理支持。 🔐 四、安全相关(Security) @EnableWebSecurity:启用 Spring Security。 @EnableGlobalMethodSecurity:启用方法级安全控制。 @PreAuthorize:前置权限判断。 @PostAuthorize:后置权限判断。 @Secured:基于角色的访问控制。 @RolesAllowed:Java EE 标准权限注解。 @AuthenticationPrincipal:获取认证用户信息。 @EnableOAuth2Sso:启用 OAuth2 单点登录。 @EnableResourceServer:启用资源服务器。 @EnableAuthorizationServer:启用授权服务器。 🧪 五、测试相关(Testing) @RunWith(SpringRunner.class):JUnit 测试集成 Spring 上下文。 @SpringBootTest:启动完整 Spring Boot 应用上下文。 @DataJpaTest:仅加载 JPA 相关配置。 @WebMvcTest:仅测试 Web 层(控制器)。 @MockBean:模拟 Bean。 @InjectMocks:注入被测试的类。 @Before:JUnit 测试前准备。 @After:JUnit 测试后清理。 @Test:JUnit 测试方法。 @DataMongoTest:仅加载 MongoDB 相关配置。 @RestClientTest:测试 REST 客户端。 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT):启动随机端口 Web 环境。 @DirtiesContext:测试后重置应用上下文。 @Sql:执行 SQL 脚本。 @DataRedisTest:仅加载 Redis 配置。 ⚙️ 六、其他常用注解 @ConditionalOnClass:当类路径存在某个类时生效。 @ConditionalOnMissingBean:当容器中没有该 Bean 时生效。 @ConditionalOnProperty:根据配置属性是否设置决定是否加载。 @ConditionalOnExpression:根据 SpEL 表达式决定是否加载。 @RefreshScope:配合 Spring Cloud Config 支持动态刷新配置。 @EnableAsync:启用异步方法调用。 @Async:标记异步方法。 @Scheduled:定时任务注解。 @EnableSwagger2:启用 Swagger 文档。 @OpenAPIDefinition:OpenAPI 文档定义(Swagger 3+)。 ✅ 提示: 实际开发中并不需要掌握全部,根据项目需求选择使用。 大部分注解来源于 Spring Framework、Spring Boot、Spring Data、Spring Security 等模块。 如果你需要具体某个注解的详细说明或示例,可以告诉我。