大家好,我是晓凡。

以下是 Spring Boot 中最常用的 100 个注解(按功能分类整理),适用于配置、控制层、数据访问、安全、测试等常见场景:


一、核心注解(Core Annotations)

  1. @SpringBootApplication:标记主类,启用自动配置和组件扫描。
  2. @Component:通用组件,自动扫描注入 Spring 容器。
  3. @Service:业务逻辑层组件。
  4. @Repository:数据访问层组件,自动处理异常。
  5. @Configuration:声明配置类,替代 XML 配置。
  6. @Bean:在配置类中定义一个 Bean。
  7. @ComponentScan:指定 Spring 要扫描的包路径。
  8. @PropertySource:加载外部属性文件。
  9. @Value:注入属性值。
  10. @Autowired:自动装配 Bean。
  11. @Qualifier:配合 @Autowired 解决多个同类型 Bean 冲突。
  12. @Primary:标记首选 Bean。
  13. @Scope:定义 Bean 的作用域(如 prototype、singleton)。
  14. @Lazy:延迟初始化 Bean。
  15. @Profile:根据环境激活配置。

二、Web 相关(Web & REST)

  1. @RestController:组合 @Controller + @ResponseBody
  2. @Controller:定义控制器类,返回视图名称。
  3. @RequestMapping:映射请求 URL 到类或方法。
  4. @GetMapping:映射 GET 请求。
  5. @PostMapping:映射 POST 请求。
  6. @PutMapping:映射 PUT 请求。
  7. @DeleteMapping:映射 DELETE 请求。
  8. @PatchMapping:映射 PATCH 请求。
  9. @PathVariable:获取 URL 中的变量。
  10. @RequestParam:绑定请求参数。
  11. @RequestBody:将请求体转为对象。
  12. @ResponseBody:将返回值直接写入 HTTP 响应体。
  13. @RequestHeader:获取请求头信息。
  14. @CookieValue:获取 Cookie 值。
  15. @SessionAttribute:从会话中获取属性。
  16. @CrossOrigin:允许跨域请求。
  17. @ResponseStatus:设置响应状态码。
  18. @ExceptionHandler:处理控制器内异常。
  19. @ControllerAdvice:全局异常处理器。
  20. @RestControllerAdvice:结合 @ControllerAdvice@ResponseBody
  21. @Valid:触发对 Bean 的校验。
  22. @InitBinder:用于自定义数据绑定与验证规则。

三、数据访问(Data Access / JPA / MyBatis)

  1. @Entity:JPA 实体类。
  2. @Table:指定实体对应的数据库表名。
  3. @Id:标识主键字段。
  4. @GeneratedValue:主键自动生成策略。
  5. @Column:映射字段到数据库列。
  6. @Transient:忽略该字段持久化。
  7. @OneToOne:一对一关联。
  8. @OneToMany:一对多关联。
  9. @ManyToOne:多对一关联。
  10. @ManyToMany:多对多关联。
  11. @JoinColumn:指定外键字段。
  12. @JoinTable:多对多关系中的连接表。
  13. @Query:自定义 JPQL 或原生 SQL 查询。
  14. @Modifying:执行更新操作。
  15. @Transactional:声明事务边界。
  16. @EnableJpaRepositories:启用 JPA Repository 扫描。
  17. @RepositoryRestResource:暴露 Repository 为 REST 接口。
  18. @Select:MyBatis 查询注解。
  19. @Insert:MyBatis 插入注解。
  20. @Update:MyBatis 更新注解。
  21. @Delete:MyBatis 删除注解。
  22. @Options:MyBatis 操作选项,如生成主键。
  23. @Results:结果映射。
  24. @ResultMap:引用已有的结果映射。
  25. @Param:命名参数传递给 SQL。
  26. @Mapper:标记接口为 MyBatis Mapper。
  27. @MapperScan:启用 MyBatis Mapper 扫描。
  28. @EnableTransactionManagement:启用事务管理支持。

四、安全相关(Security)

  1. @EnableWebSecurity:启用 Spring Security。
  2. @EnableGlobalMethodSecurity:启用方法级安全控制。
  3. @PreAuthorize:前置权限判断。
  4. @PostAuthorize:后置权限判断。
  5. @Secured:基于角色的访问控制。
  6. @RolesAllowed:Java EE 标准权限注解。
  7. @AuthenticationPrincipal:获取认证用户信息。
  8. @EnableOAuth2Sso:启用 OAuth2 单点登录。
  9. @EnableResourceServer:启用资源服务器。
  10. @EnableAuthorizationServer:启用授权服务器。

五、测试相关(Testing)

  1. @RunWith(SpringRunner.class):JUnit 测试集成 Spring 上下文。
  2. @SpringBootTest:启动完整 Spring Boot 应用上下文。
  3. @DataJpaTest:仅加载 JPA 相关配置。
  4. @WebMvcTest:仅测试 Web 层(控制器)。
  5. @MockBean:模拟 Bean。
  6. @InjectMocks:注入被测试的类。
  7. @Before:JUnit 测试前准备。
  8. @After:JUnit 测试后清理。
  9. @Test:JUnit 测试方法。
  10. @DataMongoTest:仅加载 MongoDB 相关配置。
  11. @RestClientTest:测试 REST 客户端。
  12. @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT):启动随机端口 Web 环境。
  13. @DirtiesContext:测试后重置应用上下文。
  14. @Sql:执行 SQL 脚本。
  15. @DataRedisTest:仅加载 Redis 配置。

⚙️ 六、其他常用注解

  1. @ConditionalOnClass:当类路径存在某个类时生效。
  2. @ConditionalOnMissingBean:当容器中没有该 Bean 时生效。
  3. @ConditionalOnProperty:根据配置属性是否设置决定是否加载。
  4. @ConditionalOnExpression:根据 SpEL 表达式决定是否加载。
  5. @RefreshScope:配合 Spring Cloud Config 支持动态刷新配置。
  6. @EnableAsync:启用异步方法调用。
  7. @Async:标记异步方法。
  8. @Scheduled:定时任务注解。
  9. @EnableSwagger2:启用 Swagger 文档。
  10. @OpenAPIDefinition:OpenAPI 文档定义(Swagger 3+)。

提示:

  • 实际开发中并不需要掌握全部,根据项目需求选择使用。
  • 大部分注解来源于 Spring Framework、Spring Boot、Spring Data、Spring Security 等模块。
  • 如果你需要具体某个注解的详细说明或示例,可以告诉我。

Spring Boot中最常用的 100 个注解的更多相关文章

  1. 利用 Spring Boot 中的 @ConfigurationProperties,优雅绑定配置参数

    使用 @Value("${property}") 注释注入配置属性有时会很麻烦,尤其是当你使用多个属性或你的数据是分层的时候. Spring Boot 引入了一个可替换的方案 -- ...

  2. Spring Boot中的事务管理

    原文  http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...

  3. Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅

    在上一篇Spring中使用JdbcTemplate访问数据库中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端 ...

  4. Spring Boot中使用Spring-data-jpa

    在实际开发过程中,对数据库的操作无非就“增删改查”.就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句 ...

  5. Spring Boot中使用缓存

    Spring Boot中使用缓存 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一. 原始的使 ...

  6. Spring Boot中快速操作Mongodb

    Spring Boot中快速操作Mongodb 在Spring Boot中集成Mongodb非常简单,只需要加入Mongodb的Starter包即可,代码如下: <dependency> ...

  7. Spring Boot中文文档(官方文档翻译 基于1.5.2.RELEASE)

    作者:Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, ...

  8. Spring Boot中使用时序数据库InfluxDB

    除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB.LDAP这些存储的案例.接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在 ...

  9. Spring boot中最大连接数、最大线程数与最大等待数在生产中的异常场景

    在上周三下午时,客户.业务和测试人员同时反溃生产环境登录进入不了系统,我亲自测试时,第一次登录进去了,待退出后再登录时,复现了客户的问题,场景像是请求连接被拒绝了,分析后判断是spring boot的 ...

  10. spring boot(三):Spring Boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

随机推荐

  1. ELF-Virus简易病毒程序分析

    系统功能概述 ELF-Virus实现了一个简单的病毒程序,能够感染当前目录下的ELF格式的可执行文件.病毒程序通过将自身代码附加到目标文件中,并在文件末尾添加一个特定的签名来标记文件已被感染.感染后的 ...

  2. 【SpringCloud】SpringCloud Alibaba Seata处理分布式事务

    SpringCloud Alibaba Seata处理分布式事务 分布式事务问题 分布式前 单机库存没这个问题 O(∩_∩)O 从1:1->1:N->N:N 分布式之后 单体应用被拆分成微 ...

  3. 征婚 SQL

    [男]程序员是这么征婚滴 SELECT * FROM 女人们  WHERE 未婚=true  AND Gay=false AND 处女=true AND 有魅力 =true AND 条件 IN (漂亮 ...

  4. cnpack导致view快捷键失灵。

    学习d10.3.出现怪问题: 卸载cnpack出现: 这下要用快捷键了.那可不烦透了. 如此就ok了. 鸡蛋好吃,还要知道母鸡如何生蛋的?

  5. 使用MCP C# SDK开发MCP Server + Client

    大家好,我是Edison. 近日被MCP刷屏了,刚好看到张队发了一篇文章提到MCP的官方C# SDK发布了预览版,于是手痒痒尝了一下鲜,写了一个DEMO分享给大家. MCP是什么鬼? MCP,全称是& ...

  6. 搭建Trae+Vue3的AI开发环境

    从2024年2025年,不断的有各种AI工具会在自媒体中火起来,号称各种效率王炸,而在AI是否会替代打工人的话题中,程序员又首当其冲. 作为一个后端开发,这篇文章基于Trae工具,来创建和运行一个简单 ...

  7. 【自用】restful api 常用状态码

    GET(SELECT):从服务器取出资源(一项或多项). POST(CREATE):在服务器新建一个资源. PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源). PATCH(UPD ...

  8. Web前端入门第 36 问:多图细说 CSS grid 网格布局(一)父元素容器相关属性

    grid 网格布局与 flex 弹性盒子布局一样,都需要控制 容器 跟 子元素 的样式才能做出想要的效果,部分场景只控制 容器 样式也行. grid 样式属性 一大堆 属性 来袭~~ 与网格相关的 C ...

  9. JVM 的组成

    JVM 的组成 JVM(Java Virtual Machine)是 Java 的核心组件,负责执行 Java 字节码程序.以下是 JVM 的主要组成部分: 1. 类加载子系统(Class Loade ...

  10. quartz——Corn表达式

    摘录:quartz Cron表达式一分钟教程 - 简书 (jianshu.com) Quartz学习之Cron表达式详解_five-five的博客-CSDN博客_quartz cron表达式 每隔5秒 ...