日志记录是任何应用程序的关键方面,提供了对应用程序运行时行为的可见性。在 Spring Boot 中,日志子系统高度可配置,并支持多种日志框架和模式。本博客探讨了 Spring Boot 应用程序中常见的日志模式、它们的配置以及实际用例。 1. Spring Boot 日志记录简介 Spring Boot 使用 SLF4J (Java…
Spring Boot 3.4 中我发现非常重要的下一个特性是通过引入一个全新的测试类 MockMvcTester 来支持 AssertJ 进行 MockMvc 测试。在本文中,我们想深入探讨 Spring Boot 3.4 中的这一新特性,看看它如何帮助我们的 MockMvc 测试并提高测试的可读性。 我为这篇文章编写了一个非常基础的 Spring…
在分布式或微服务架构中,容错作业对于确保系统的弹性和可靠性至关重要。Spring 提供了强大的框架和工具,如 Spring Batch、Spring Retry 和 Resilience4j,以设计能够优雅处理故障的作业。 为什么容错性很重要? 容错确保您的系统即使在部分故障的情况下也能继续运行。例如: • 重试失败的任务。 • 跳过有问题的记录。 •…
在 Spring Security 中, 过滤器链 是一系列 安全过滤器 ,它们按照特定顺序处理传入的 HTTP 请求。这些过滤器根据定义的安全规则决定是否允许请求继续、进行身份验证或拒绝访问。 Spring Security 的过滤器链是 Servlet 过滤器 机制的一部分,由 FilterChainProxy…
乐观锁 是一种确保多个事务不会相互覆盖更改的机制。这是通过在实体中维护一个版本号来实现的,该版本号在每次事务中都会被检查并更新。如果两个事务尝试同时更新同一个实体,其中一个事务将因 OptimisticLockException 而失败。…
保护你的 API 免受滥用至关重要。速率限制是 API 安全的关键。它可以防止拒绝服务攻击、管理资源并确保客户端之间的公平使用。Spring Boot 3 和 Bucket4j 结合提供了一个强大且灵活的方式来为你的应用程序添加速率限制。 在本文中,我们将探讨如何在 Spring Boot 3 应用程序中使用 Bucket4j…
1. 理解 Spring Boot 的启动过程 在深入优化技术之前,了解 Spring Boot 应用程序启动过程中发生了什么至关重要。Spring Boot 经历了多个阶段,包括依赖解析、应用上下文创建、Bean 初始化等。了解哪个阶段最耗时可以帮助你有效地集中优化工作。 1.1 依赖解析和类路径扫描 当 Spring Boot…
1. CORS(跨域资源共享) 定义: CORS 是浏览器中实现的一种安全特性,用于控制 Web 应用程序如何从不同域访问资源。它的设计目的是防止网页向与提供该页面的域不同的域发出请求。这对于 API 尤其重要,因为托管在不同域上的客户端(如 Web 应用程序)可能需要访问你的 Spring Boot 服务器。 CORS 的工作原理: •…
大多数情况下,Spring Data JPA 会使用 JPQL(Java Persistence Query Language)为你编写或生成查询语句。虽然这很方便,但有时你需要对数据库执行的 SQL 进行 完全控制 。这时,原生查询(Native Queries)就派上用场了。 原生查询 就是你 自己编写的原始 SQL 语句 。…
本指南探讨了如何在Spring Boot应用程序中使用 ObjectMapper 将Java对象转换为JSON,以及将JSON转换回Java对象。它涵盖了关键用例,例如自定义 JSON字段名称 、处理 未知属性 、处理 列表 ,以及为特殊场景(如 日期格式 和 美化打印 )配置 ObjectMapper 。 ObjectMapper 是Spring…