Spring Boot 常用注解全解析:从入门到实战,一看就懂
2026/4/27 14:02:45 网站建设 项目流程

在 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),可读性和维护性会好很多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询