- Spring Boot 教程
- Spring Boot - 首页
- Spring Boot - 简介
- Spring Boot - 快速入门
- Spring Boot - 引导
- Spring Tool Suite
- Spring Boot - Tomcat 部署
- Spring Boot - 构建系统
- Spring Boot - 代码结构
- Spring Bean & 依赖注入
- Spring Boot - 运行器
- Spring Boot - 启动器
- Spring Boot - 应用属性
- Spring Boot - 配置
- Spring Boot – 注解
- Spring Boot - 日志
- 构建 RESTful Web 服务
- Spring Boot - 异常处理
- Spring Boot - 拦截器
- Spring Boot - Servlet 过滤器
- Spring Boot - Tomcat 端口号
- Spring Boot - Rest Template
- Spring Boot - 文件处理
- Spring Boot - 服务组件
- Spring Boot - Thymeleaf
- 使用 RESTful Web 服务
- Spring Boot - CORS 支持
- Spring Boot - 国际化
- Spring Boot - 调度
- Spring Boot - 启用 HTTPS
- Spring Boot - Eureka 服务器
- 使用 Eureka 注册服务
- 网关代理服务器和路由
- Spring Cloud 配置服务器
- Spring Cloud 配置客户端
- Spring Boot - Actuator
- Spring Boot - Admin 服务器
- Spring Boot - Admin 客户端
- Spring Boot - 启用 Swagger2
- Spring Boot - 使用 SpringDoc OpenAPI
- Spring Boot - 创建 Docker 镜像
- 跟踪微服务日志
- Spring Boot - Flyway 数据库
- Spring Boot - 发送邮件
- Spring Boot - Hystrix
- Spring Boot - Web Socket
- Spring Boot - 批处理服务
- Spring Boot - Apache Kafka
- Spring Boot - Twilio
- Spring Boot - 单元测试用例
- Rest Controller 单元测试
- Spring Boot - 数据库处理
- 保护 Web 应用程序
- Spring Boot - 使用 JWT 的 OAuth2
- Spring Boot - Google Cloud Platform
- Spring Boot - Google OAuth2 登录
- Spring Boot 资源
- Spring Boot - 快速指南
- Spring Boot - 有用资源
- Spring Boot - 讨论
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注释的方法将在单独的线程中运行,允许调用者继续执行而不必等待方法完成。