超全spring、spring boot 注解备忘录(37个常用注解使用说明)
这篇文章是关于 Spring 和 Spring Boot 中 37 个常用注解的使用说明及详细解释,包括主类标记、组件定义、请求处理、作用域、异步任务、定时任务、条件注册、配置文件相关等方面,还提供了大量示例代码辅助理解。
注解 | 作用 |
---|---|
@SpringBootApplication | 标记Spring 应用程序的主类。组合@Configuration 、@EnableAutoConfiguration 和@ComponentScan 。这是您的应用程序开始的地方 |
@Component | 将类标记为Spring组件,使其成为托管bean |
@Service | 服务层类的特殊类型@Component,通常包含业务逻辑 |
@Repository | 用于数据仓库类的特殊类型的 @Component。启用异常转换 |
@Controller | 用于处理 Web 请求的 Spring MVC 控制器的特殊类型 @Component。 |
@RestController | 结合了 @Controller 和 @ResponseBody。处理 Web 请求并直接返回 JSON/XML 响应 |
@Autowired | 自动将依赖项注入到字段、setter 方法或构造函数中 |
@Value | 将属性文件中的值插入字段、setter方法或构造函数参数 |
@Configuration | 指示一个类声明一个或多个@Bean方法,并且可以被Spring容器处理以生成bean定义和服务请求 |
@Bean | 声明一个方法,该方法返回Spring容器管理的Spring bean |
@EnableAutoConfiguration | 根据类路径中存在的依赖项自动配置Spring应用程序 |
@ComponentScan | 配置用于@Configuration类的组件扫描指令。指定要扫描带注释组件的基包。 |
@RequestMapping | 将Web请求映射到特定的处理程序类或处理程序方法。 |
@GetMapping | 为@RequestMapping(method = RequestMethod.GET)添加标签。处理GET请求。 |
@PostMapping | 为@RequestMapping(method = RequestMethod.POST)添加标签。处理POST请求。 |
@PutMapping | 为@RequestMapping(method = RequestMethod.PUT)添加标签。处理PUT请求。 |
@DeleteMapping | 为@RequestMapping(method = RequestMethod.DELETE)添加标签。处理DELETE请求。 |
@PatchMapping | 为@RequestMapping(method = RequestMethod.PATCH)添加标签。处理PATCH请求。 |
@RequestParam | 将Web请求参数绑定到方法参数。 |
@PathVariable | 将URI模板变量绑定到方法参数。 |
@ResponseBody | 将返回的对象序列化为指定格式(通常是 JSON 格式)并将其作为响应主体返回。 |
@CrossOrigin | 在方法或类上启用跨域资源共享(CORS) |
@ExceptionHandler | 定义一个方法来处理由请求处理程序方法引发的异常 |
@ControllerAdvice | 允许您处理整个应用程序中的异常,而不仅仅是单个控制器 |
@RestControllerAdvice | 组合@ControllerAdvice和@ResponseBody。REST控制器 |
@RequestScope | 表示 Bean 具有请求作用域 |
@SessionScope | 表示 Bean 是会话作用域的 |
@ApplicationScope | 指示bean是应用程序范围的 |
@SessionAttributes | 用于在会话中存储模型属性 |
@ModelAttribute | 将方法参数或方法返回值绑定到命名的模型属性上 |
@Async | 表示方法应异步执行 |
@Scheduled | 使用 cron 表达式或固定延迟/速率标记要调度的方法 |
@EnableScheduling | 启用对定时任务的支持 |
@Conditional | 根据条件注册bean |
@Profile | 仅当指定的配置文件处于活动状态时才注册 Bean |
@MockBean | 在 Spring 应用程序上下文中mock bean(与 Spring Boot 一起用于测试) |
@SpyBean | 在 Spring 应用程序上下文中创建 spy Bean(与 Spring Boot 一起用于测试) |
详细说明及用法
@SpringBootApplication
标记Spring靴子应用程序的主类。结合@Configuration
、@EnableAutoConfiguration
和@ComponentScan
1 | java代码解读复制代码 |
@Component
将类标记为Spring组件,使其成为托管bean
1 | java代码解读复制代码 |
@Service
@Component的特殊类型,用于服务层类,通常包含业务逻辑。
1 | java代码解读复制代码 |
@Repository
数据存储库类的特殊类型@Component。启用异常转换
1 | java代码解读复制代码 |
@Controller
用于处理Web请求的Spring MVC控制器的特殊类型@Component
1 | java代码解读复制代码 |
@RestController
组合@Controller和@ResponseBody。处理Web请求并直接返回JSON/XML响应。
1 | java代码解读复制代码 |
@Autowired
自动将依赖项注入到字段、setter方法或构造函数中
1 | java代码解读复制代码 |
@Value
将属性文件中的值插入字段、setter方法或构造函数参数
1 | java代码解读复制代码 |
@Configuration
指示一个类声明一个或多个@Bean方法,并且可以被Spring容器处理以生成bean定义和服务请求
1 | java代码解读复制代码 |
@Bean
声明一个方法,该方法返回Spring容器管理的Spring bean
1 | java代码解读复制代码 |
@EnableAutoConfiguration
根据类路径中存在的依赖项自动配置Spring应用程序
1 | java代码解读复制代码 |
SpringBootApplication是一个组合注解,组合了
@EnableAutoConfiguration
@ComponentScan
配置用于@Configuration
类的组件扫描指令。指定要扫描带注释组件的基包。
1 | java代码解读复制代码 |
@RequestMapping
将Web请求映射到特定的处理程序类或处理程序方法。
1 | java代码解读复制代码 |
@GetMapping
为@RequestMapping(method = RequestMethod.GET)添加标签。处理GET请求。
1 | java代码解读复制代码 |
@PostMapping
为@RequestMapping(method = RequestMethod.POST)添加标签。处理POST请求。
1 | java代码解读复制代码 |
@PutMapping
为@RequestMapping(method = RequestMethod.PUT)添加标签。处理PUT请求。
1 | java代码解读复制代码 |
@DeleteMapping
为@RequestMapping(method = RequestMethod.DELETE)添加标签。处理DELETE请求。
1 | java代码解读复制代码 |
@PatchMapping
为@RequestMapping(method = RequestMethod.PATCH)添加标签。处理PATCH请求。
1 | java代码解读复制代码 |
@RequestParam
将Web请求参数绑定到方法参数。
1 | java代码解读复制代码 |
@PathVariable
将URI模板变量绑定到方法参数。
1 | java代码解读复制代码 |
@RequestBody
将HTTP请求的json body
绑定到方法参数。
1 | java代码解读复制代码 |
@ResponseBody
将返回的对象序列化为指定格式(通常是 JSON 格式)并将其作为响应主体返回。
1 | java代码解读复制代码 |
@CrossOrigin
在方法或类上启用跨域资源共享(CORS)
1 | java代码解读复制代码 |
@ExceptionHandler
定义一个方法来处理由请求处理程序方法引发的异常
1 | java代码解读复制代码 |
仅对
MyController
生效
@ControllerAdvice
允许您处理整个应用程序中的异常,而不仅仅是单个控制器
1 | java代码解读复制代码 |
对所有
controller
生效
@RestControllerAdvice
组合@ControllerAdvice和@ResponseBody。REST控制器
1 | java代码解读复制代码 |
@RequestScope
@RequestScope 注解在 Spring 框架中用于定义 Bean 的作用域,使得每个 HTTP 请求都有实例化的独立 Bean。这意味着在同一个请求过程中,一个带有 @RequestScope 的 Bean 实例会被共享,但在不同的请求中会创建新的实例
1 | java代码解读复制代码 |
@SessionScope
@SessionScope
注解在 Spring
框架中用于定义 Bean 的作用域,使得每个 HTTP 会话都有实例化的独立 Bean。这意味着在同一个会话过程中,一个带有 @SessionScope
的 Bean 实例会被共享,但在不同的会话中会创建新的实例
1 | java代码解读复制代码 |
@ApplicationScope
@ApplicationScope
注解在 Spring
框架中用于定义 Bean 的作用域,使得每个应用程序上下文都有实例化的独立 Bean。这意味着在同一个应用程序上下文中,一个带有 @ApplicationScope
的 Bean 实例会被共享,但在不同的应用程序上下文中会创建新的实例
1 | java代码解读复制代码 |
@SessionAttributes
@SessionAttributes
注解用于在会话中存储模型属性。这些属性在多个请求之间共享,并且在会话结束时删除
1 | java代码解读复制代码 |
@ModelAttribute
@ModelAttribute
注解用于将方法参数或方法返回值绑定到命名的模型属性上
1 | java代码解读复制代码 |
@Async
@Async
注解表示方法应异步执行
1 | java代码解读复制代码 |
@Scheduled
@Scheduled
注解使用 cron 表达式或固定延迟/速率标记要调度的方法
1 | java代码解读复制代码 |
@EnableScheduling
@EnableScheduling
注解启用对定时任务的支持
1 | java代码解读复制代码 |
@Conditional
@Conditional
注解根据条件注册 bean
1 | java代码解读复制代码 |
@Profile
@Profile
注解仅当指定的配置文件处于活动状态时才注册 Bean
1 | java代码解读复制代码 |
@MockBean
@MockBean
注解在 Spring 应用程序上下文中 mock bean(与 Spring Boot 一起用于测试)
1 | java代码解读复制代码 |
@SpyBean
@SpyBean
注解在 Spring 应用程序上下文中创建 spy Bean(与 Spring Boot 一起用于测试)
1 | java代码解读复制代码 |