Spring Boot中最常用的 100 个注解
大家好,我是晓凡。
以下是 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 等模块。
- 如果你需要具体某个注解的详细说明或示例,可以告诉我。
Spring Boot中最常用的 100 个注解的更多相关文章
- 利用 Spring Boot 中的 @ConfigurationProperties,优雅绑定配置参数
使用 @Value("${property}") 注释注入配置属性有时会很麻烦,尤其是当你使用多个属性或你的数据是分层的时候. Spring Boot 引入了一个可替换的方案 -- ...
- Spring Boot中的事务管理
原文 http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
在上一篇Spring中使用JdbcTemplate访问数据库中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端 ...
- Spring Boot中使用Spring-data-jpa
在实际开发过程中,对数据库的操作无非就“增删改查”.就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句 ...
- Spring Boot中使用缓存
Spring Boot中使用缓存 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一. 原始的使 ...
- Spring Boot中快速操作Mongodb
Spring Boot中快速操作Mongodb 在Spring Boot中集成Mongodb非常简单,只需要加入Mongodb的Starter包即可,代码如下: <dependency> ...
- Spring Boot中文文档(官方文档翻译 基于1.5.2.RELEASE)
作者:Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, ...
- Spring Boot中使用时序数据库InfluxDB
除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB.LDAP这些存储的案例.接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在 ...
- Spring boot中最大连接数、最大线程数与最大等待数在生产中的异常场景
在上周三下午时,客户.业务和测试人员同时反溃生产环境登录进入不了系统,我亲自测试时,第一次登录进去了,待退出后再登录时,复现了客户的问题,场景像是请求连接被拒绝了,分析后判断是spring boot的 ...
- spring boot(三):Spring Boot中Redis的使用
spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...
随机推荐
- [每日算法 - 华为机试] LeetCode 475. 供暖器
入口 力扣https://leetcode.cn/problems/heaters/submissions/ 题目描述 冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. 在加热 ...
- 【Guava】集合工具类-Immutable&Lists&Maps&Sets
Immutable 如<Effective Java>Item1)所述,在设计类的时候,倾向优先使用静态工厂方法(static factory method)而非构造函数(construc ...
- Java实体类如何映射到json数据(驼峰映射到json中的下划线)
Java实体类(驼峰)映射到json数据(下划线) 由于经常需要接收前端的json数据,而json数据一般都是使用下划线命名的.后端又不太建议使用map接收,所以就需要用到使用自定义类来接收(如果参数 ...
- 详细介绍FutureTask类
一.详细介绍FutureTask类 FutureTask 未来将要执行的任务对象,继承 Runnable.Future 接口,用于包装 Callable 对象,实现任务的提交 public stati ...
- 前端自动打包工具webpack的安装和使用
一.准备 要使用webpack工具,最好了解一些基础的文件目录操作的命令行, win all里的一些常用的命令行 http://blog.csdn.net/qq_36110571/article/de ...
- Java编程--String类和基本数据类型的相互转换
基本数据类型:byte.short.int.long.char.float.double.boolean 基本数据类型->String:利用String类提供的ValueOf(基本类型)方法转换 ...
- DDD分层设计与异步职责划分:让你的代码不再“异步”混乱
title: DDD分层设计与异步职责划分:让你的代码不再"异步"混乱 date: 2025/05/04 00:18:53 updated: 2025/05/04 00:18:53 ...
- dashboard部署
1.下载dashboard资源请单 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/re ...
- KMP跨平台开发中的现状调研
Kotlin Multiplatform Development(KMP)作为一种先进的跨平台开发技术,已从2023年11月的稳定版演进至2025年更加成熟的状态.目前KMP在业务逻辑共享方面已相当成 ...
- eclipse左边窗口再次出现的方法
1.WindowsShow ViewOtherProject Explorer 2.WindowsShow ViewProject Explorer