1211 字
6 分钟
Spring Boot的常用注解

Spring Boot的常用注解#

Spring Boot 的核心设计理念是“约定优于配置”(Convention over Configuration)。它通过大量的注解极大地简化了传统 Spring 项目中繁琐的 XML 配置。

为了方便理解,我们可以将 Spring Boot 中最常用的注解按功能模块进行分类:

1. 核心与启动类注解#

这些注解通常用于项目的入口类,负责启动整个 Spring 应用上下文。

  • @SpringBootApplication
    • 作用: 这是 Spring Boot 最核心的注解,通常标注在包含 main 方法的主类上。
    • 细节: 它实际上是一个复合注解,主要包含了以下三个重要注解:
      • @SpringBootConfiguration:等同于 @Configuration,声明当前类是一个配置类。
      • @EnableAutoConfigurationSpring Boot 的灵魂。它会根据类路径(classpath)下的依赖自动配置 Spring 的各种 Bean(例如引入了 web 依赖,就自动配置 Tomcat 和 Spring MVC)。
      • @ComponentScan:自动扫描当前包及其子包下的所有标记了 @Component@Service 等注解的类,并将它们注册为 Bean。

2. 依赖注入与组件扫描(Stereotype Annotations)#

用于将类交给 Spring 容器(IoC)管理,以及在需要的地方注入这些类。

  • @Component
    • 作用: 泛指组件。当一个类不好归类到后面的某一层时,可以使用它,将其标记为 Spring 管理的 Bean。
  • @Service
    • 作用: 用于标注业务逻辑层(Service 层)的类。功能上与 @Component 相同,但提供了更好的语义化,方便后续做面向切面编程(AOP)。
  • @Repository
    • 作用: 用于标注数据访问层(DAO/Mapper 层)的类。它除了注册 Bean,还能将底层数据库的异常(如 SQLException)统一封装成 Spring 的数据访问异常。
  • @Controller
    • 作用: 用于标注控制层的类,负责处理由前端发起的 HTTP 请求,通常结合视图解析器(如 Thymeleaf、JSP)返回 HTML 页面。
  • @Autowired
    • 作用: 用于依赖注入。Spring 会自动寻找类型匹配的 Bean 注入到该字段、构造方法或 Setter 方法中。默认按类型(byType)装配
  • @Qualifier
    • 作用: 当一个接口有多个实现类,@Autowired 无法判断该注入哪一个时,结合 @Qualifier("beanName") 可以指定按名称(byName)装配

3. Web 与 HTTP 请求映射#

这些是在开发 RESTful API 或 Web 接口时每天都会用到的注解。

  • @RestController
    • 作用: 复合注解,等于 @Controller + @ResponseBody。标注在类上,表示该类的所有方法都会直接返回数据(通常是 JSON/XML),而不是返回视图页面。
  • @RequestMapping
    • 作用: 映射 HTTP 请求 URL 到具体的类或方法上。可以指定请求的路径、方法(GET/POST等)、请求头等。
  • @GetMapping / @PostMapping / @PutMapping / @DeleteMapping
    • 作用: 它们是 @RequestMapping 的快捷方式,分别对应 HTTP 的 GET(查询)、POST(新增)、PUT(修改)、DELETE(删除)操作,使代码更简洁。
  • @PathVariable
    • 作用: 获取 URL 路径中的动态参数。
    • 例子: /users/{id},方法参数写 @PathVariable("id") Long id 即可拿到 URL 中的 id 值。
  • @RequestParam
    • 作用: 获取请求的查询参数(Query string)或表单数据。
    • 例子: /users?name=张三,方法参数写 @RequestParam("name") String name
  • @RequestBody
    • 作用: 用于接收 HTTP 请求体(Body)中的数据(通常是 JSON 格式),并自动反序列化为 Java 对象。常用于 POST/PUT 请求。

4. 配置与属性绑定#

用于读取 application.propertiesapplication.yml 中的配置信息。

  • @Configuration
    • 作用: 声明当前类是一个配置类(替代传统的 Spring XML 配置文件)。类中通常包含一个或多个 @Bean 方法。
  • @Bean
    • 作用: 标注在方法上,表示该方法会返回一个对象,并且这个对象会被 Spring 容器管理起来。常用于引入第三方库的组件。
  • @Value
    • 作用: 注入配置文件中的简单属性值。
    • 例子: @Value("${server.port}") 可以将配置文件中的端口号注入到变量中。
  • @ConfigurationProperties
    • 作用: 将配置文件中的某段带有相同前缀的配置项,批量映射到一个 Java 类的属性上。非常适合处理复杂的、结构化的配置数据。

5. 全局异常处理#

优雅地处理系统抛出的各种异常。

  • @ControllerAdvice / @RestControllerAdvice
    • 作用: 这是一个增强型的 Controller。通常与 @ExceptionHandler 配合使用,用于实现全局统一异常处理@RestControllerAdvice 会将返回结果自动转为 JSON。
  • @ExceptionHandler
    • 作用: 标注在方法上,指定该方法拦截并处理特定类型的异常(例如 @ExceptionHandler(NullPointerException.class))。

6. 测试相关#

  • @SpringBootTest
    • 作用: 标注在测试类上。它会启动整个 Spring Boot 的应用上下文(相当于把项目跑起来),以便进行深度的集成测试。
  • @MockBean
    • 作用: 用于模拟(Mock)Spring 容器中的某个 Bean。在单元测试中,如果某个服务依赖了数据库调用或外部 API,可以使用它来创建一个虚拟的 Bean,从而隔离测试环境。
Spring Boot的常用注解
http://www.shineacz.top/posts/spring-boot的常用注解/
作者
shineAcZ
发布于
2026-04-16
许可协议
CC BY 4.0