Spring Boot 注解

2025 年 3 月 18 日 | 6 分钟阅读

Spring Boot 注解是一种元数据形式,提供有关程序的数据。换句话说,注解用于提供程序的补充信息。它不是我们开发的应用程序的一部分。它不会直接影响它们所注解的代码的操作。它不会改变编译程序的行为。

在本节中,我们将讨论一些重要的 Spring Boot 注解,我们将在本教程后面使用它们。

核心 Spring 框架注解

@Required:它应用于 bean 的 setter 方法。它表示被注解的 bean 必须在配置时填充所需的属性,否则它会抛出异常 BeanInitilizationException

示例

@Autowired:Spring 通过提供 @Autowired 注解来提供基于注解的自动装配。它用于在 setter 方法、实例变量和构造函数上自动装配 Spring bean。当我们使用 @Autowired 注解时,Spring 容器通过匹配数据类型来自动装配 bean。

示例

@Configuration:这是一个类级别的注解。被 @Configuration 注解的类被 Spring 容器用作 bean 定义的来源。

示例

@ComponentScan:当我们需要扫描包中的 bean 时使用。它与 @Configuration 注解一起使用。我们还可以指定要扫描 Spring 组件的基础包。

示例

@Bean:这是一个方法级别的注解。它是 XML <bean> 标签的替代品。它告诉方法生成一个由 Spring 容器管理的 bean。

示例

Spring 框架原型注解

@Component:这是一个类级别的注解。它用于将 Java 类标记为 bean。被 @Component 注解的 Java 类在 classpath 中被找到。Spring 框架会将其拾取并在应用程序上下文中配置为 Spring Bean

示例

@Controller:@Controller 是一个类级别的注解。它是 @Component 的特化。它将一个类标记为 Web 请求处理程序。它通常用于提供网页。默认情况下,它返回一个字符串,指示要重定向的路由。它主要与 @RequestMapping 注解一起使用。

示例

@Service:它也用于类级别。它告诉 Spring 该类包含业务逻辑

示例

@Repository:这是一个类级别的注解。Repository 是直接访问数据库的 DAOs(数据访问对象)。Repository 执行所有与数据库相关的操作。

Spring Boot 注解

  • @EnableAutoConfiguration:它自动配置 classpath 中存在的 bean 并将其配置为运行方法。在 Spring Boot 1.2.0 版本中,这个注解的使用减少了,因为开发人员提供了该注解的替代方案,即 @SpringBootApplication
  • @SpringBootApplication:它是 @EnableAutoConfiguration、@ComponentScan@Configuration 三个注解的组合。

Spring MVC 和 REST 注解

  • @RequestMapping:它用于映射 Web 请求。它有许多可选元素,如 consumes、header、method、name、params、path、producesvalue。我们将其与类和方法一起使用。

示例

  • @GetMapping:它将 HTTP GET 请求映射到特定的处理方法。它用于创建获取资源的 Web 服务端点。它用于替代:@RequestMapping(method = RequestMethod.GET)
  • @PostMapping:它将 HTTP POST 请求映射到特定的处理方法。它用于创建创建资源的 Web 服务端点。它用于替代:@RequestMapping(method = RequestMethod.POST)
  • @PutMapping:它将 HTTP PUT 请求映射到特定的处理方法。它用于创建创建或更新资源的 Web 服务端点。它用于替代:@RequestMapping(method = RequestMethod.PUT)
  • @DeleteMapping:它将 HTTP DELETE 请求映射到特定的处理方法。它用于创建删除资源的 Web 服务端点。它用于替代:@RequestMapping(method = RequestMethod.DELETE)
  • @PatchMapping:它将 HTTP PATCH 请求映射到特定的处理方法。它用于替代:@RequestMapping(method = RequestMethod.PATCH)
  • @RequestBody:它用于将 HTTP 请求与方法参数中的对象绑定。它内部使用 HTTP MessageConverters 来转换请求体。当我们用 @RequestBody 注解方法参数时,Spring 框架会将传入的 HTTP 请求体绑定到该参数。
  • @ResponseBody:它将方法的返回值绑定到响应体。它告诉 Spring Boot 框架将返回对象序列化为 JSON 和 XML 格式。
  • @PathVariable:它用于从 URI 中提取值。它最适合 RESTful Web 服务,其中 URL 包含路径变量。我们可以在一个方法中定义多个 @PathVariable。
  • @RequestParam:它用于从 URL 中提取查询参数。它也称为查询参数。它最适合 Web 应用程序。如果 URL 中不存在查询参数,它可以指定默认值。
  • @RequestHeader:它用于获取有关 HTTP 请求头的信息。我们将其作为方法参数使用。注解的可选元素有 name、required、value、defaultValue。对于头中的每个详细信息,我们应该指定单独的注解。我们可以在一个方法中多次使用它。
  • @RestController:它可以被认为是 @Controller@ResponseBody 注解的组合。@RestController 注解本身被 @ResponseBody 注解。它消除了为每个方法注解 @ResponseBody 的需要。
  • @RequestAttribute:它将方法参数绑定到请求属性。它提供了从控制器方法方便地访问请求属性的功能。借助 @RequestAttribute 注解,我们可以访问在服务器端填充的对象。

注意:我们已经在 RESTful Web 服务教程 中使用所有上述注解并提供了实际示例。


Spring Boot 注解选择题

1. 哪个注解用于标记声明一个或多个 @Bean 方法的配置类?

  1. @RestController
  2. @Component
  3. @Configuration
  4. @Service
 

答案:C)

解释: @Configuration 注解表示一个类声明了一个或多个 @Bean 方法,Spring 容器可以处理这些方法以生成 bean 定义。


2. 哪个注解用于在 Spring Boot 应用程序中启用调度?

  1. @EnableAsync
  2. @EnableScheduling
  3. @EnableCaching
  4. @EnableBatchProcessing
 

答案:B)

解释:@EnableScheduling 用于在 Spring Boot 应用程序中启用对计划任务的支持。


3. @SpringBootApplication 注解的目的是什么?

  1. 将一个类标记为 Spring 配置类
  2. 启用 Spring Boot 自动配置和组件扫描
  3. 配置 Spring MVC 控制器
  4. 声明一个 Spring bean
 

答案:B)

解释: @SpringBootApplication 是一个方便的注解,它结合了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan,从而启用了自动配置和组件扫描。


4. 哪个注解用于将方法参数绑定到 Web 请求参数?

  1. @RequestParam
  2. @PathVariable
  3. @RequestBody
  4. @ModelAttribute
 

答案:A)

解释: @RequestParam 用于将方法参数绑定到 Web 请求参数。


5.哪个注解用于处理 Spring MVC 控制器中的异常?

  1. @ExceptionHandler
  2. @ControllerAdvice
  3. @RestController
  4. @ResponseStatus
 

答案:A)

解释: @ExceptionHandler 用于处理 Spring MVC 控制器中方法抛出的异常。