【Spring Boot】
文章平均质量分 90
Spring Boot从入门到精通,实例解读,源码分析
小小工匠
show me the code ,change the world
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Boot - 20 个官方工具类深度实战
Spring官方工具类为开发提供了高效、安全的基础功能,无需额外依赖。本文介绍了20个核心工具类,包括字符串处理(StringUtils)、集合操作(CollectionUtils)和参数校验(Assert),每个工具类都配有代码示例和实际应用场景。项目提供了交互式演示系统,可直接运行查看效果。这些工具类经过Spring团队生产验证,能有效避免常见陷阱,提升开发效率。原创 2025-10-04 06:30:00 · 1325 阅读 · 0 评论 -
SpringBoot - Request Body 可重复读取的完美解决方案
文章摘要: 本文深入探讨了HTTP请求体重复读取的技术难题。通过分析线上故障案例,揭示了Servlet规范中InputStream只能读取一次的核心限制(如IllegalStateException异常)。针对Spring官方方案(如ContentCachingRequestWrapper)存在的非自动化、易出错等缺陷,提出理想解决方案需满足自动化、透明化等五大特性。文章从底层原理(TCP流、Servlet容器内核缓冲区)到生产实践,系统性地阐述了微服务架构下多组件协同读取请求体的技术挑战与优化方向。原创 2025-10-02 05:30:00 · 1158 阅读 · 0 评论 -
Web安全 - Spring Boot应用中的XSS攻击与SQL注入防护实战
本文详细介绍了XSS跨站脚本攻击和SQL注入攻击的原理、分类及其危害,并提供在Spring Boot应用中防止这两种安全漏洞的完整解决方案。通过创建请求过滤器、重写HTTP请求包装类和消息转换器等技术手段,实现对参数和JSON请求体的全方位防护,确保Web应用的安全性。原创 2025-10-01 07:30:00 · 1856 阅读 · 0 评论 -
Spring Boot - 协程 Kilim vs Loom
Kilim是一个Java协程框架,通过用户态轻量级调度实现高并发。其核心是Task协程单元和Mailbox消息队列,利用字节码增强技术将同步方法改写成可挂起的形式。相比线程,Kilim协程切换开销更小,可支持百万级并发;相比Reactor等事件驱动模型,它用同步写法实现异步逻辑,代码更简洁。Kilim通过调度器将大量Task动态分配到少量线程上执行,通过挂起/恢复机制实现高效复用。与Java虚拟线程(Loom)相比,Kilim采用完全用户态调度,性能更高但需字节码增强。原创 2025-09-30 05:45:00 · 2047 阅读 · 0 评论 -
SpringBoot - 使用Spring Integration构建消息驱动架构实战
Spring Integration概述与应用 摘要 Spring Integration是Spring家族的企业集成框架,实现了企业集成模式(EIP),提供基于消息驱动的编程模型。核心思想是"一切皆消息",包含消息、通道、端点等核心组件,通过统一方式连接应用模块和外部系统。它与Spring Boot无缝整合,适用于消息驱动微服务、系统集成和事件流处理等场景。通过注解配置和消息通道,可构建灵活的消息处理流程,包括过滤、转换、路由等操作。框架支持与Kafka、JMS、FTP等适配器集成,同原创 2025-09-30 04:45:00 · 1803 阅读 · 0 评论 -
Spring Boot - 从PF4J到SBP:深入解析Java插件化架构的演进与实践
本文介绍了Java插件化开发的三种框架:PF4J、PF4J-Spring和SBP。PF4J作为基础框架提供轻量级插件管理能力;PF4J-Spring实现与Spring框架的集成;SBP专为Spring Boot设计,提供更完善的插件化解决方案。通过一个"动态消息通知系统"案例,展示了如何定义扩展点接口,并实现邮件、短信等不同通知方式的插件。文章比较了三者的特性与适用场景,建议Spring Boot项目优先选择SBP。这种架构能有效解决单体应用臃肿问题,实现功能模块的热插拔和动态扩展。原创 2025-09-29 15:40:27 · 1660 阅读 · 0 评论 -
SpringBoot - Spring 资源加载全解析:ResourceLoader 与 ResourceUtils 的正确打开方式
Spring 资源加载:ResourceLoader 与 ResourceUtils 的核心解析 摘要: Spring 通过 Resource 接口统一抽象各类资源访问,ResourceLoader 和 ResourceUtils 是其核心工具。ResourceLoader 是策略模式的资源加载器,支持 classpath、file、http 等多种协议,能够根据路径字符串返回 Resource 对象;ResourceUtils 则是静态工具类,提供路径解析和转换功能。关键区别在于:ResourceLoad原创 2025-09-08 19:30:00 · 1317 阅读 · 0 评论 -
SpringBoot - 大文件分片上传系统:从原理到实践的完整指南
本文介绍了一种基于SpringBoot的大文件分片上传解决方案。系统采用"化整为零"策略,将大文件分割为多个小块传输,解决了传统单文件上传存在的超时、内存溢出等问题。技术架构包含前端文件选择、MD5计算、分片上传、进度监控等模块,后端采用SpringBoot+MinIO技术栈,支持断点续传、并发传输和秒传功能。文章详细阐述了系统设计、技术选型、核心代码实现及安全机制,包括文件类型验证、HMAC签名验证等,为处理大文件上传提供了完整的技术方案。原创 2025-08-26 06:45:00 · 1917 阅读 · 0 评论 -
SpringBoot - 轻量级配置热更新方案实战
本文介绍了一种零依赖、轻量级的SpringBoot配置热更新方案,通过结合Java NIO WatchService文件监听和Spring Environment配置管理,实现配置修改后秒级生效。该方案采用事件驱动架构,包含文件监听器、配置刷新处理器、环境更新和属性重新绑定等核心流程,支持无缝替换PropertySource并自动触发@ConfigurationProperties绑定。关键技术点包括:基于操作系统事件的文件监听机制、配置源动态替换、属性重新绑定处理以及事件通知机制。方案具有零外部依赖、实时原创 2025-08-25 06:30:00 · 642 阅读 · 0 评论 -
Spring Boot - Spring Boot + gRPC 实战指南
本文介绍了Spring Boot与gRPC的集成方案,通过高性能的Protocol Buffers协议提升微服务通信效率。主要内容包括:gRPC相比REST API的优势(二进制序列化、HTTP/2多路复用等);基于.proto文件定义服务接口的流程;Spring Boot项目配置gRPC所需依赖;服务端实现与客户端调用方法;以及REST接口集成方案。文章还提供了完整的技术架构图和Maven配置示例,帮助开发者快速实现高效的微服务通信。原创 2025-08-25 04:30:00 · 1586 阅读 · 0 评论 -
SpringBoot 实战 - 基于【强加密主存 + HMAC 分片索引】的加密数据模糊查询方案
本文提出了一种敏感信息加密存储与模糊查询的创新方案——分片存储。该方案通过双表设计(主业务表+分片索引表)和双层加密(AES-256-GCM+HMAC-SHA256)实现数据安全与查询效率的平衡。核心原理是将敏感信息切片生成HMAC指纹索引,查询时先匹配索引再回表解密,形成"索引先行,密文回表"的闭环。相比明文匹配、数据库函数解密和ES检索等方案,分片存储在10万到千万级数据场景下,兼具安全性、性能和维护简便性优势,是合规性要求严格的业务场景的理想选择。原创 2025-08-24 05:30:00 · 1038 阅读 · 0 评论 -
Shell - Spring Boot可视化服务管理运维脚本
本文介绍了一套基于Shell的SpringBoot服务可视化管理系统,旨在解决传统部署方式中操作繁琐、状态不明、日志分散等问题。该系统提供彩色终端界面集中管理多服务,支持智能启停、资源监控、日志查看和批量操作功能,并配套自动化部署脚本实现一键发布和安全回滚。通过配置驱动方式管理服务,结合健康检查与状态监控,显著提升了微服务场景下的运维效率和可靠性。文末还提供了完整的脚本实现,适用于单机多服务和小规模集群的管理需求。原创 2025-08-14 19:51:36 · 1061 阅读 · 0 评论 -
Spring Boot + Jasypt:打造安全的应用配置管理
Jasypt是一个开源的Java加密库,旨在简化敏感数据的安全保护。文章介绍了Jasypt的核心特性,包括简单易用的API、支持多种加密算法、与Spring框架的无缝集成等。重点讲解了在Spring Boot项目中集成Jasypt的步骤:添加依赖、配置加密密钥、启用加密属性支持,并通过示例展示如何加密数据库密码等敏感信息。Jasypt能够以"ENC()"格式包裹加密值存入配置文件,运行时自动解密,既保证安全性又简化开发流程,是Java项目中保护敏感数据的理想选择。原创 2025-07-30 06:30:00 · 974 阅读 · 0 评论 -
SpringBoot - Bucket4j:分布式限流的“流速调节器”
Bucket4j:高性能Java限流库解析 Bucket4j是一个基于令牌桶算法的Java限流库,专为微服务和高并发系统设计。核心特性包括: 纯Java实现:轻量级无外部依赖,支持本地和分布式场景 灵活配置:可组合多种限流规则,支持突发流量和时间窗口控制 多后端支持:内置Redis、Hazelcast等分布式存储集成 双模式API:同步/异步调用满足不同性能需求 Spring集成:提供过滤器拦截和注解式限流方案 相比Guava RateLimiter等工具,Bucket4j在分布式场景和策略灵活性上更具优势原创 2025-07-30 04:45:00 · 2413 阅读 · 0 评论 -
SpringBoot - Zalando Logbook:Java 应用的 HTTP 请求/响应日志利器
Zalando Logbook是一款强大的Java库,专为HTTP请求/响应日志记录设计。它支持全面的请求与响应日志,包括请求体和响应体,并提供敏感数据混淆、条件过滤等定制功能。Logbook兼容多种主流技术栈(Servlet、Apache HTTP、OkHttp等),并支持Spring Boot自动配置。通过简单的依赖添加和配置,开发者可以快速集成该工具,实现高效的调试、审计和问题排查。其高度可扩展性使Logbook成为Java应用HTTP日志记录的理想解决方案。原创 2025-07-29 06:45:00 · 1056 阅读 · 0 评论 -
SpringBoot - P6Spy 开箱即用:SQL 日志记录、格式化与监控高级配置
P6Spy是一个开源的JDBC代理库,能够拦截并记录实际执行的SQL语句(包含参数值)、执行时间等信息,便于开发者调试和分析数据库操作。它支持灵活集成方式,如通过Spring Boot Starter快速配置,或手动配置spy.properties文件。P6Spy可以输出完整SQL日志、执行耗时及操作类型,且对代码侵入性低,适用于调试、性能分析和生产监控等场景。其优势包括可定制的日志格式、过滤功能、堆栈追踪和JMX监控支持。原创 2025-07-29 05:15:00 · 1426 阅读 · 0 评论 -
SpringBoot - ShedLock:分布式任务锁从入门到实战
ShedLock是一个轻量级的Java分布式锁工具,用于解决多实例环境下定时任务重复执行的问题。它通过Redis等外部存储实现锁协调,确保任务仅被一个实例执行。核心原理是利用@SchedulerLock注解声明任务锁,获取锁成功才执行任务。支持多种存储后端,集成简单,适合需要任务互斥但非强一致性的场景。使用Redis存储时性能较高,但需注意锁超时设置和时钟同步问题。相比完整调度框架,ShedLock更适用于简单的分布式定时任务控制。原创 2025-07-28 06:45:00 · 1486 阅读 · 0 评论 -
SpringBoot - 用责任链模式实现业务编排
import com/*** 处理器接口定义/*** 处理 : 返回true ,继续处理,返回false,终止处理* @return/*** 获取处理顺序* @return/*** 处理器接口定义/*** 处理 : 返回true ,继续处理,返回false,终止处理* @return/*** 获取处理顺序* @return/*** 处理器接口定义/*** 处理 : 返回true ,继续处理,返回false,终止处理* @return/**原创 2025-03-07 16:52:29 · 3104 阅读 · 0 评论 -
SpringBoot - 正确使用静态方法及变量
在 Spring Boot 项目中使用静态方法和变量时,确实存在一些潜在的陷阱,尤其是在多线程环境、依赖注入和单元测试等方面。原创 2025-01-31 05:45:00 · 3687 阅读 · 0 评论 -
SpringBoot - Spring Profiles 详解
Spring Profiles 提供了一种灵活的方式来管理不同环境下的应用程序配置。通过@Profile注解,可以轻松地控制配置类和组件的加载时机。通过和属性,可以灵活地激活和组合 Profiles。Profile Groups 则进一步简化了多个相关 Profiles 的管理。此外,Spring Boot 还支持 Profile 特定的配置文件,使得不同环境下的配置管理更加方便。原创 2025-01-02 13:42:06 · 4309 阅读 · 0 评论 -
Spring Boot - 日志功能深度解析与实践指南
Spring Boot 作为 Java 生态中最流行的应用开发框架之一,提供了强大且灵活的日志功能,支持多种日志框架,并且可以轻松配置。接下来我们将基于Spring Boot 官方文档,深入解析 Spring Boot 的日志功能,并结合实际场景提供详细的配置与实践指南。Spring Boot 的日志功能旨在为开发者提供开箱即用的日志解决方案,同时支持高度自定义。默认集成 Logback:Spring Boot 默认使用 Logback 作为日志框架,无需额外配置。多日志框架支持。原创 2025-01-01 22:25:15 · 3741 阅读 · 0 评论 -
SpringBoot - 动态端口切换黑魔法
这种设计允许服务在不完全停止的情况下切换到更新的版本,从而极大地缩短了不可用时间,实现了接近于零停机的效果。参考:https://mp.weixin.qq.com/s/_rt1NP_LPfzatb0EYXry9Q。修改TestPortController 的返回值, 打个jar包, 启动新的jar包,,观察返回结果是否是修改后的返回值。原创 2024-12-16 19:15:00 · 3617 阅读 · 0 评论 -
EDA - Spring Boot构建基于事件驱动的消息系统
在微服务架构和大规模分布式系统中,事件驱动架构(EDA)成为了非常重要的设计模式。通过事件驱动,我们可以解耦系统的各个组件,提高系统的可扩展性、可维护性和响应能力。接下来,我们将演示一下如何在 Spring Boot 中实现一个基于事件驱动的消息发送和接收流程,从消息的发送、事件的发布到事件的监听。原创 2024-12-09 19:56:45 · 4405 阅读 · 0 评论 -
Plugin - 插件开发04_Spring Boot中的SPI机制与Spring Factories实现
首先,定义一个简单的服务接口,File;接着,我们创建几个实现类, 它们分别实现了接口。原创 2024-12-07 19:56:19 · 4160 阅读 · 0 评论 -
Plugin - 插件开发03_Spring Boot动态插件化与热加载
首先,我们需要定义一个插件接口,该接口为插件提供统一的方法。插件实现类将根据此接口进行开发。接口 IPlugin 包含一个方法 customPluginMethod,插件类可以通过实现该接口来定义具体的插件行为。原创 2024-12-07 16:22:42 · 4960 阅读 · 0 评论 -
SpringBoot - 优雅的实现【账号登录错误次数的限制和锁定】
/ 默认值依赖配置文件,可在此处设定默认值在服务的方法上添加自定义注解基于Spring Boot的账号登录错误次数限制和锁定功能,使用了Redis来存储登录失败次数和锁定状态,并通过自定义注解和AOP来实现切面逻辑。配置文件中可以灵活配置最大尝试次数和锁定时长。原创 2024-11-26 19:45:00 · 5499 阅读 · 0 评论 -
SpringBoot - 多环境打包与配置文件排除实践
在实际开发中,Spring Boot 项目通常需要适配不同的运行环境,例如开发环境、测试环境、生产环境等。这些环境下的配置可能包含敏感信息,例如数据库连接密码、API密钥等。因此,在项目打包时,我们不仅需要支持多环境配置,还要考虑如何排除敏感配置文件,以保证安全性。原创 2024-11-21 06:45:00 · 5412 阅读 · 0 评论 -
SpringBoot - spring.profiles.active最佳实践
在实际开发中,应用程序往往需要根据不同的环境(如开发环境、测试环境、生产环境等)加载不同的配置。Spring Boot 提供了一个强大的功能——多环境配置,通过指定当前应用运行的环境,简单又高效!是 Spring Boot 用来指定激活环境的核心配置属性。Spring Boot 会根据该属性的值动态加载对应的配置文件,决定应用程序运行时的行为。原创 2024-11-20 20:12:23 · 5838 阅读 · 0 评论 -
SpringBoot - 多环境打包最佳实践
实际开发中,应用程序通常需要部署到不同的运行环境中,例如 开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,通常需要对项目进行多环境配置。在Spring Boot项目中,实现多环境打包主要通过配置不同的环境文件,并在打包或启动时指定需要的环境参数。原创 2024-11-20 07:18:32 · 4714 阅读 · 0 评论 -
Spring Boot - 扩展点 EnvironmentPostProcessor源码分析及真实案例
EnvironmentPostProcessor 是 Spring Boot 提供的一个扩展点,用于在应用环境初始化过程中执行一些额外的处理。该接口允许开发者在初始化完成后、应用上下文加载之前,自定义和调整环境变量,这为配置和条件化应用设置提供了极大的灵活性。是一个非常简单的接口,仅包含一个方法。参数解释:当前 Spring 应用的对象,通过该参数可以访问和操作环境中的属性源。:Spring 应用的入口,提供对应用的一些基本信息和配置信息的访问。注解表明它是一个函数式接口,可以用 lambda 表达式实现。原创 2024-11-10 06:15:00 · 4955 阅读 · 0 评论 -
Spring Boot - 开启log-request-details详细记录调测Controller接口
在Spring Boot项目中,调试Controller接口的请求和响应信息可以极大地帮助开发人员排查问题并确保应用程序的安全性和性能。原创 2024-08-10 06:45:00 · 5676 阅读 · 0 评论 -
Spring Boot - 通过ServletRequestHandledEvent事件实现接口请求的性能监控
在Spring框架中,监控接口请求的性能可以通过事件实现。这种方法简单有效,能够帮助开发者实时跟踪和分析请求的性能。概述:自定义拦截器可以用来在请求处理的不同阶段(如请求前、请求后、请求完成后)添加额外的逻辑。实现步骤实现接口,覆盖其中的方法,如preHandlepostHandle、和。在这些方法中记录请求开始时间、结束时间,计算处理时间。将拦截器注册到Spring MVC配置中。示例代码@Override@Override。原创 2024-08-09 22:03:59 · 5932 阅读 · 0 评论 -
Spring Boot - 在Spring Boot中实现灵活的API版本控制(下)_ 封装场景启动器Starter
import org/*** 接口版本标识注解/*** 指定API的版本号。* 此方法返回一个整型数组,数组中的每个元素代表一个API版本号。* @return 代表API版本号的整数数组。/*** 接口版本标识注解/*** 指定API的版本号。* 此方法返回一个整型数组,数组中的每个元素代表一个API版本号。* @return 代表API版本号的整数数组。/*** 接口版本标识注解/*** 指定API的版本号。原创 2024-08-08 17:30:36 · 6043 阅读 · 0 评论 -
Spring Boot - 在Spring Boot中实现灵活的API版本控制(上)
实现方式:通过自定义注解标记API版本,并使用拦截器进行版本控制。步骤创建自定义注解创建版本拦截器@Override= null) {配置拦截器@Override在控制器中使用注解// 返回 V1 版本的产品列表// 返回 V2 版本的产品列表。原创 2024-08-07 21:00:19 · 6492 阅读 · 0 评论 -
Spring Boot - 优雅实现支持通配符和IP段的IP访问黑白名单机制
IP访问黑白名单机制在许多场景中是非常必要的,其主要目的在于提高系统的安全性和控制访问权限。以下是一些主要原因:1. 安全性防止恶意攻击通过限制特定IP地址的访问,可以有效防止DDoS攻击、暴力破解和其他形式的恶意访问。减少暴露面仅允许特定的可信IP访问系统,可以减少潜在攻击者的攻击面。2. 访问控制区分内部和外部访问在企业环境中,可以限制只有内部IP(例如公司局域网IP)才能访问某些敏感资源。按区域限制访问可以根据地理位置或区域限制访问,例如只允许来自特定国家的IP访问。原创 2024-07-26 20:15:00 · 5984 阅读 · 0 评论 -
Spring Boot - 利用MDC(Mapped Diagnostic Context)实现轻量级同步/异步日志追踪
MDC(Mapped Diagnostic Context)是一个在日志框架中常用的概念,主要用于在多线程环境中关联和传递一些上下文信息,以便在日志输出中包含这些信息,从而实现更好的日志记录和调试。在Java中,常见的日志框架如Log4j、Logback和Log4j2都提供了对MDC的支持。MDC允许在多线程环境中将上下文信息与线程相关联。可以在应用程序的不同部分设置一些上下文信息,并确保在同一线程中的后续日志记录中能够访问到这些信息。MDC特别适用于跟踪请求或会话相关的信息,如请求ID、会话ID等。原创 2024-04-14 14:01:11 · 7983 阅读 · 0 评论 -
Java - 深入四大限流算法:原理、实现与应用
限流算法是一种在分布式系统中广泛使用的技术,用于控制对系统资源的访问速率,以保护系统免受恶意攻击或突发流量导致的过载。API 网关限流:在微服务架构中,API 网关通常是系统对外的唯一入口,需要限制单个用户或IP在一定时间内的请求次数,以保护后端服务不受恶意请求或突发流量的冲击。分布式系统中的服务限流:在分布式系统中,各个服务之间可能会有调用关系,通过限流可以控制服务间的调用频率,避免服务间因为调用过于频繁而造成的服务过载。微服务间的接口限流。原创 2024-01-21 11:43:20 · 8666 阅读 · 0 评论 -
Spring Boot - 利用Resilience4j-Circuitbreaker实现断路器模式_防止级联故障
Resilience4J 是一个针对 Java 8 应用程序的轻量级容错和弹性库。它设计用于在分布式系统中的服务之间提供弹性和容错性。Resilience4J 的名字来源于它提供的核心功能,即让系统(服务)能够“弹性”(resilient)地应对各种失败情况,包括网络问题、第三方服务故障等。断路器(Circuit Breaker):当检测到服务异常或超时,断路器会打开,阻止进一步的请求发送到该服务。一段时间后(通常是秒级),断路器会进入半开状态,允许一个测试请求通过以检查服务是否恢复。原创 2024-01-18 06:30:00 · 9389 阅读 · 0 评论 -
Spring Boot - 利用Resilience4j-RateLimiter进行流量控制和服务降级
Resilience4J 是一个针对 Java 8 应用程序的轻量级容错和弹性库。它设计用于在分布式系统中的服务之间提供弹性和容错性。Resilience4J 的名字来源于它提供的核心功能,即让系统(服务)能够“弹性”(resilient)地应对各种失败情况,包括网络问题、第三方服务故障等。断路器(Circuit Breaker):当检测到服务异常或超时,断路器会打开,阻止进一步的请求发送到该服务。一段时间后(通常是秒级),断路器会进入半开状态,允许一个测试请求通过以检查服务是否恢复。原创 2024-01-15 05:45:00 · 9860 阅读 · 0 评论 -
Spring Boot - Application Events 同步 VS 异步 发布订阅事件实战
这允许你将任务标记为异步,并且可以在不同的线程中执行它们,从而提高应用程序的响应能力和吞吐量。注解允许你定义一个自定义的线程池,Spring 会使用这个线程池来执行异步任务。时,它将在一个单独的线程中运行,而不是在调用它的线程中立即执行。是一个在 Spring 框架中使用的注解,它用于启用 Spring 的异步执行功能。注解来标记一个方法为异步执行。当方法被调用时,它将在一个单独的线程中运行,而不是在调用线程中立即执行。是一个方法级别的注解,在 Spring 框架中用于标识一个方法应该以异步方式执行。原创 2024-01-13 21:04:39 · 8788 阅读 · 0 评论
分享