Spring Boot 注解怎么用?常用 Annotations 详解

文章导读
Previous Quiz Next 本章将详细讨论 Spring Boot 中的一些重要注解。
📋 目录
  1. 介绍
  2. 如何开启 Spring 注解?
  3. 注解
A A

Spring Boot - 注解



Previous
Quiz
Next

本章将详细讨论 Spring Boot 中的一些重要注解。

介绍

注解是代码的元数据。元数据是指关于数据的数据。它们通常放置在 class、method 或变量声明的上面。注解是一些以 @ 开头的字母数字值。在 class 中使用注解不会影响程序的编译或运行。当 注解用于配置时,不需要 XML 文件。

以下注解已在 Spring Boot - Configuration/Autoconfiguration 章节中讨论过。

  • @Component

  • @Configuration

  • @SpringBootApplication

  • @EnableAutoConfiguration

  • @ComponentScan

  • @AutoConfigurationPackage

  • @ConditionalOnClass

  • @ConditionalOnMissingBean

  • @ConditionalOnProperty

如何开启 Spring 注解?

要开启 Spring 注解,请在 XML 配置文件中 beans 声明之前添加以下行。

<context:annotation-config />

注解

@RestController

@RestController 将一个 class 标记为处理 RESTful web 请求的 controller。它结合了 @Controller@ResponseBody 的功能。以下是它的作用:

  • @Controller− 将 class 标记为 Spring MVC controller,负责处理传入的 HTTP 请求。

  • @ResponseBody− 告诉 Spring 将 controller 方法的返回值直接序列化为 HTTP response body,通常以 JSON 或 XML 等格式。

HTTP 相关注解

@RequestMapping

@RequestMapping 注解用于将 web 请求映射到 controller class 中的特定 handler 方法。它充当传入 HTTP 请求与负责处理这些请求的方法之间的桥梁。您可以使用 method 属性指定方法处理的 HTTP 方法(GET、POST、PUT、DELETE 等)。

在最新的 Spring Boot 版本中,推荐使用快捷注解而不是 @RequestMapping

  • @GetMapping@RequestMapping(method = RequestMethod.GET) 的快捷方式

  • @PostMapping@RequestMapping(method = RequestMethod.POST) 的快捷方式

  • @PutMapping@RequestMapping(method = RequestMethod.PUT) 的快捷方式

  • @DeleteMapping@RequestMapping(method = RequestMethod.DELETE) 的快捷方式

  • @PatchMapping@RequestMapping(method = RequestMethod.PATCH) 的快捷方式

Spring 当前支持五种内置注解来处理不同类型的传入 HTTP 请求方法,即 GET、POST、PUT、DELETE 和 PATCH。

@PathVariable

@PathVariable 将方法参数绑定到 URI 模板变量。URI 模板变量是 URI 中用花括号括起来的参数,在 URI 解析前可以被替换。

例如,在 URI 模板

'/users/{id}/{?query1,query2}'

中有三个变量:

  • id −必需的路径变量

  • query1 −可选的查询变量

  • query2 −另一个可选的查询变量

@RequestParam

@RequestParam 将方法参数绑定到请求参数。

@RequestBody

@RequestBody 将方法参数绑定到 HTTP 请求的 body。

@ModelAttribute

@ModelAttribute 将方法参数绑定到 model 属性。在 Spring Boot 中,model 变量是一个接口,用于保存从 controller 传递到 view 的数据。这个 Model 接口位于 org.springframework.ui 包中。

JPA 相关注解

@Repository

@Repository 将一个 class 标记为数据访问对象(DAO)。这个 class 负责对数据库执行 CRUD 操作。

@Entity

@Entity 将一个 class 标记为 JPA entity。

@Id

@Id 指定 entity 的主键。

@GeneratedValue

@GeneratedValue 指定主键的生成方式。

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column

Column 将字段映射到数据库列。

@Transactional

@Transactional 将方法或 class 标记为事务性的。它确保方法(或整个 class)在事务上下文中执行。当您用 @Transactional 标记方法时,Spring 会自动为该方法处理事务管理。当您用 @Transactional 注解方法时,Spring 会在方法开始执行前启动一个事务。如果方法成功完成(无异常),Spring 会提交事务(即保存对数据库的更改)。如果发生异常,Spring 会回滚事务。要使用 @Transactional,您需要在 Spring Boot 应用程序中配置事务管理。将 @EnableTransactionManagement 添加到主应用程序 class 中。

其他重要注解

@Value

此注解用于为变量和方法参数赋值默认值。它还可以用于从 properties 文件或环境变量注入属性值。

@EnableCaching

@EnableCaching 启用缓存支持。当您将 @EnableCaching 添加到配置 class 中时,Spring 会扫描应用程序中标注了缓存相关注解(如 @Cacheable、@CachePut、@CacheEvict 或 @Caching)的方法。

@EnableAsync

@EnableAsync 启用异步方法执行支持。标注了 @Async 的方法将在单独的线程中运行,允许调用者无需等待方法完成即可继续执行。