Spring Boot – 注解



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

介绍

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

注解@Component, @Configuration, @SpringBootApplication, @EnableAutoConfiguration, @ComponentScan, @AutoConfigurationPackage, @ConditionalOnClass, @ConditionalOnMissingBean, @ConditionalOnProperty已经在Spring Boot - 配置/自动配置章节中讨论过了。

如何开启 Spring 注解?

要开启 Spring 注解,请在 XML 配置文件中的 bean 声明之前添加以下<context:annotation-config />。

注解

@RestController

@RestController 将一个类标记为 RESTful web 请求的控制器。它结合了@Controller@ResponseBody的功能。以下是它的作用

  • @Controller− 将类标记为 Spring MVC 控制器,负责处理传入的 HTTP 请求。

  • @ResponseBody− 告诉 Spring 将控制器的返回值直接序列化到 HTTP 响应体中,通常以 JSON 或 XML 等格式。

HTTP 相关注解

@RequestMapping

@RequestMapping 注解用于将 web 请求映射到控制器类中的特定处理程序方法。它充当传入 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 请求的主体。

@ModelAttribute

@ModelAttribute 将方法参数绑定到模型属性。在 Spring Boot 中,模型变量是一个接口,用于保存从控制器传递到视图的数据。此接口Model位于org.springframework.ui包中。

JPA 相关注解

@Repository

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

@Entity

@Entity 将类标记为 JPA 实体。

@Id

@Id 指定实体的主键。

@GeneratedValue

@GeneratedValue 指定如何生成主键。

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column

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

@Transactional

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

其他重要注解

@Value

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

@EnableCaching

@EnableCaching 启用缓存支持。当您将@EnableCaching添加到配置类时,Spring 会扫描应用程序以查找使用缓存相关注解(例如@Cacheable, @CachePut, @CacheEvict 或 @Caching)注释的方法。

@EnableAsync

@EnableAsync 启用异步方法执行的支持。使用@Async注释的方法将在单独的线程中运行,允许调用者继续执行而不必等待方法完成。

广告