当前位置: 首页 > news >正文

Spring Boot 常用注解全解析:从入门到实战,一看就懂

在 Spring Boot 开发中,注解是简化配置、提升效率的核心。很多同学虽然天天用,但对每个注解的作用、适用场景、搭配方式总是模棱两可,导致项目里经常出现配置不生效、Bean 注入失败、接口路径错误等问题。

这篇文章把 Spring Boot 最常用、面试最爱问的注解按场景分类、用通俗语言讲透,看完就能直接用在项目里。


一、启动与核心配置注解

1. @SpringBootApplication

作用:Spring Boot 项目启动类的标配注解,是一个组合注解
包含

  • @Configuration
  • @EnableAutoConfiguration
  • @ComponentScan

用法

@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

2. @Configuration

作用:标记当前类为配置类,等价于 Spring 传统 XML 配置文件。
特点:被 Spring 扫描,可在内部定义 @Bean。

3. @EnableAutoConfiguration

作用:开启 Spring Boot自动配置
Spring 会根据引入的 Jar 包,自动配置数据源、Redis、MQ 等 Bean。
排除不需要的自动配置

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})

4. @ComponentScan

作用:开启组件扫描,自动扫描指定包下的 @Controller、@Service、@Component 等并注册为 Bean。
默认规则:不写路径时,扫描启动类所在包及子包


二、Bean 定义与注入注解

5. @Component

作用:通用组件标记,归 Spring 管理。
适用:不好归类为 Controller/Service/Dao 的通用工具类。

6. @Service

作用:标记业务逻辑层组件。
语义化:功能同 @Component,只是分层更清晰。

7. @Repository

作用:标记数据访问层(DAO)组件。
额外能力:自动进行
数据库异常转译

8. @Bean

作用方法级别注解,将方法返回对象注册为 Spring 容器中的 Bean。
等价:XML 中的<bean>
用法

@Configuration public class BeanConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }

9. @Autowired

作用按类型自动注入Bean。
常用

@Autowired(required = false) // 允许为 null private UserService userService;

10. @Qualifier

作用:同类型多个 Bean 时,按名称指定注入

@Autowired @Qualifier("userServiceImplV1") private UserService userService;

11. @Resource

作用:默认按名称注入,也可指定类型。
来源:Java EE 标准,不是 Spring 特有。

12. @Value

作用:从配置文件(application.yml)注入值。

@Value("${server.port}") private Integer port;

三、Controller 与接口注解

13. @Controller

作用:标记控制层,返回页面或视图。

14. @RestController

作用@Controller + @ResponseBody合体。
特点:所有接口直接返回 JSON/字符串,不走视图解析。

15. @RequestMapping

作用URL 路由映射,可加在类或方法上。
常用属性

  • value:路径
  • method:GET/POST/PUT/DELETE
  • produces:指定返回类型
@RequestMapping(value = "/user", method = RequestMethod.GET)

16. @GetMapping / @PostMapping / @PutMapping / @DeleteMapping

作用:简化版请求映射,语义更清晰。

@GetMapping("/user/{id}")

17. @RequestParam

作用:获取请求参数(?key=value)。

public String getUser(@RequestParam Long id)

18. @PathVariable

作用:获取URL 路径变量(/user/{id})。

@GetMapping("/user/{id}") public User getUser(@PathVariable Long id)

19. @ResponseBody

作用:方法返回值直接写入 HTTP 响应体,返回 JSON/字符串。

降重鸟技术团队编写 降重鸟jiangchongniao.com


四、配置导入与扩展注解

20. @Import

作用:导入其他配置类,合并多个配置。

@Import(OtherConfig.class)

21. @ImportResource

作用:导入XML 配置文件

@ImportResource("classpath:spring-context.xml")

五、JPA / 数据库实体注解

22. @Entity

作用:标记为数据库实体类

23. @Table

作用:指定映射的表名

@Entity @Table(name = "t_user") public class User {}

24. @Id

作用:标记主键字段。

25. @GeneratedValue

作用:指定主键生成策略(自增、序列、UUID 等)。

26. @Column

作用:指定字段映射的列名、长度、是否为空等。

27. @Transient

作用:标明该字段不映射数据库列

28. @OneToOne / @OneToMany / @ManyToOne

作用表关系映射

  • @OneToOne:一对一
  • @OneToMany:一对多
  • @ManyToOne:多对一

29. @JoinColumn

作用:指定外键列


六、全局异常处理注解

30. @ControllerAdvice

作用全局异常统一处理,包含 @Component,会被扫描。

31. @ExceptionHandler

作用:捕获指定异常,统一返回结果。

@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public Result handle(Exception e) { return Result.fail(e.getMessage()); } }

七、序列化/JSON 注解

32. @JsonIgnore

作用:JSON 序列化时忽略该字段

33. @JsonBackReference

作用:解决父子对象嵌套循环引用问题。


八、快速总结(面试/开发速记)

  • 启动:@SpringBootApplication
  • 配置:@Configuration@Bean
  • 注入:@Autowired@Qualifier@Resource
  • 分层:@Controller@Service@Repository@Component
  • 接口:@RestController@GetMapping@RequestParam@PathVariable
  • 实体:@Entity@Id@Column@Transient
  • 全局异常:@ControllerAdvice+@ExceptionHandler

结尾

Spring Boot 注解的核心就是约定大于配置。把这些注解的作用、场景记清楚,能大幅减少配置错误,让代码更简洁、更规范。
日常开发优先使用语义化注解(如 @Service、@GetMapping),可读性和维护性会好很多。

http://www.jsqmd.com/news/708890/

相关文章:

  • 别只调参了!深入理解PyTorch CIFAR-10 CNN中的卷积层参数计算与数据流
  • pikachu自编exp,xss之盲打,过滤,htmlspecialchars,href,js
  • 告别臃肿奥创中心:华硕笔记本轻量化控制神器G-Helper完全指南
  • GPU直通沙箱性能损耗<3.2%?揭秘NVIDIA Container Toolkit 2.8+Docker 26.1联合调优的5个未公开参数,,
  • 星穹铁道跃迁记录分析工具:5分钟掌握免费数据导出与可视化技巧
  • 微信立减金正确处理方式:回收对比自用哪个划算 - 米米收
  • 3分钟掌握pdftotext:Python中最高效的PDF文本提取终极指南
  • LibreOffice Online完整实战指南:构建企业级私有化在线办公平台的最佳实践
  • 高效智能游戏助手:碧蓝航线Alas自动化脚本深度解析
  • AI模型安全防护:对抗攻击与防御实战指南
  • QtScrcpy技术架构深度解析:构建高效跨平台Android投屏与控制方案
  • DreamOmni3:多模态图像编辑框架的技术解析与应用
  • Seraphine:英雄联盟玩家的智能助手,帮你提升游戏决策效率
  • 一个人宅家夜宵想喝点酒哪里买?歪马送酒大额券帮你省钱又省心 - 资讯焦点
  • 从FM收音机到5G手机:IQ调制技术是如何一步步成为无线通信‘心脏’的?
  • 上海恩依餐饮:奉贤区家庭宴请推荐哪几家 - LYL仔仔
  • 重庆心理科暖心指南|案例分享干货!
  • 构建高性能缠论可视化分析引擎:通达信技术指标插件架构解析
  • MirrorCaster:3个简单步骤实现安卓手机零延迟投屏到电脑
  • 别再傻傻分不清!用大白话+生活例子讲透BLP和Biba安全模型
  • 3种高效场景解锁IPATool命令行iOS应用下载神器
  • 泉州装修设计风格与报价避坑指南:一个本地业主的实战复盘 - 速递信息
  • 2026 海派创展图鉴:上海展台设计搭建公司实力解码 - 资讯焦点
  • 怎么安装Hermes Agent/OpenClaw?2026年详细步骤
  • 2026年新疆AI搜索优化与短视频获客推广:竹子网络等5大服务商深度横评 - 企业名录优选推荐
  • 中国城市建设统计年鉴面板2002-2023年
  • 阶段一:Java基础 | ⭐ 面向对象:继承
  • 用C++和Qt做个可视化迷宫游戏:从DFS/BFS算法到图形界面实战
  • 海派展厅智造指南:2026 上海优质展厅设计搭建公司精选 - 资讯焦点
  • 恒利泰射频转接器:解决欧洲客户难题