在 Spring Boot 中记录完整的请求体和响应体日志
完整的请求日志对于 **故障排查** 和 **审计** 来说极其重要。通过查看日志,可以检查数据的准确性、参数的传递方式以及服务器返回的数据。 由于 Socket 流不能重读,所以需要一种实现来把读取和写入的数据缓存起来,并且可以多次重复读取缓存的内容。 Spring 提供 2 个可重复读取请求、响应的 Wrapper 工具类: * `ContentCachingRequ...
完整的请求日志对于 **故障排查** 和 **审计** 来说极其重要。通过查看日志,可以检查数据的准确性、参数的传递方式以及服务器返回的数据。 由于 Socket 流不能重读,所以需要一种实现来把读取和写入的数据缓存起来,并且可以多次重复读取缓存的内容。 Spring 提供 2 个可重复读取请求、响应的 Wrapper 工具类: * `ContentCachingRequ...
1、概览 {#1概览} ----------- 本文将带你了解 [Spring Boot](/spring-boot/) 应用中的日志配置。 2、初始设置 {#2初始设置} --------------- 通过 [Spring Initializr](https://start.springboot.io/) 初始化一个 Spring Boot 应用: 创建唯一的类 `...
1、概览 {#1概览} ----------- 本文将带你了解如何在 [Spring Boot](/spring-boot/) 中使用 H2 内存数据库。与其他数据库一样,Spring Boot 生态系统对 H2 提供了开箱即用的支持。 2、依赖 {#2依赖} ----------- 添加 [h2](https://mvnrepository.com/artifact/c...
1、概览 {#1概览} ----------- 本文将带你了解如何在 UI (前端)应用中使用 Zuul 作为代理与 Spring REST 服务通信,使用 Zuul 代理的目的是为了统一处理 **CORS** 和 **Same Origin Policy** 问题。 Zuul 是 Netflix 基于 JVM 的路由和服务器端负载均衡器。Spring Cloud 与嵌入式...
1、概览 {#1概览} ----------- 本文将带你了解如何在 [Spring](/spring/) 中重新加载 Properties 配置属性。 2、Spring 读取 Properties {#2spring-读取-properties} ----------------------------------------------- Spring 有几种不同的方...
1、概览 {#1概览} ----------- 本文将带你了解 Spring Boot 应用中的声明式 REST 客户端 - [**Spring Cloud OpenFeign**](/spring-cloud-openfeign)。 Feign 通过可插拔的注解支持(包括 Feign 注解和 JAX-RS 注解)使编写 Web 客户端更加容易。 此外,Spring Cl...
1、概览 {#1概览} ----------- 本文将带你了解使用 [Spring Data JPA](/spring-data-jpa/) 获取最后一条记录的多种方式。 2、初始设置 {#2初始设置} --------------- 首先,创建并初始化要查询的表。 创建一个 `Post` 实体类: ```java @Entity public class Pos...
1、概览 {#1概览} ----------- [Spring Boot](/spring-boot/) 通过 Hibernate Validator(Bean Validation 的实现)对数据验证提供了强大的支持。 本文将通过一个实际的 REST 应用带你了解如何在 Spring Boot 中校验数据。 2、Maven 依赖 {#2maven-依赖} -------...
1、概览 {#1概览} ----------- 本文将带你了解 Spring 中 `@RequestParam` 注解的用法。 简单地说,可以使用 `@RequestParam` 从请求中提取查询参数、表单参数甚至是多个参数。 2、示例端点 {#2示例端点} --------------- 假设我们有一个端点 `/api/foos`,它接受一个名为 `id` 的查询参数...
1、概览 {#1概览} ----------- [上一篇文章](/rest-search-language-spring-jpa-criteria/) 介绍了一个基于 JPA Criteria 的查询语言解决方案。 本文将带你了解如何使用 [Spring Data JPA](/spring-data-jpa/) 和 `Specification` 构建一个搜索/过滤 RES...