
【Spring Boot2.X】
文章平均质量分 89
Spring Boot2.X从入门到精通,实例解读,源码分析
小小工匠
show me the code ,change the world
展开
-
SpringBoot - 用责任链模式实现业务编排
import com/*** 处理器接口定义/*** 处理 : 返回true ,继续处理,返回false,终止处理* @return/*** 获取处理顺序* @return/*** 处理器接口定义/*** 处理 : 返回true ,继续处理,返回false,终止处理* @return/*** 获取处理顺序* @return/*** 处理器接口定义/*** 处理 : 返回true ,继续处理,返回false,终止处理* @return/**原创 2025-03-07 16:52:29 · 1792 阅读 · 0 评论 -
SpringBoot - 正确使用静态方法及变量
在 Spring Boot 项目中使用静态方法和变量时,确实存在一些潜在的陷阱,尤其是在多线程环境、依赖注入和单元测试等方面。原创 2025-01-31 05:45:00 · 2185 阅读 · 0 评论 -
SpringBoot - Spring Profiles 详解
Spring Profiles 提供了一种灵活的方式来管理不同环境下的应用程序配置。通过@Profile注解,可以轻松地控制配置类和组件的加载时机。通过和属性,可以灵活地激活和组合 Profiles。Profile Groups 则进一步简化了多个相关 Profiles 的管理。此外,Spring Boot 还支持 Profile 特定的配置文件,使得不同环境下的配置管理更加方便。原创 2025-01-02 13:42:06 · 2619 阅读 · 0 评论 -
Spring Boot - 日志功能深度解析与实践指南
Spring Boot 作为 Java 生态中最流行的应用开发框架之一,提供了强大且灵活的日志功能,支持多种日志框架,并且可以轻松配置。接下来我们将基于Spring Boot 官方文档,深入解析 Spring Boot 的日志功能,并结合实际场景提供详细的配置与实践指南。Spring Boot 的日志功能旨在为开发者提供开箱即用的日志解决方案,同时支持高度自定义。默认集成 Logback:Spring Boot 默认使用 Logback 作为日志框架,无需额外配置。多日志框架支持。原创 2025-01-01 22:25:15 · 2616 阅读 · 0 评论 -
SpringBoot - 动态端口切换黑魔法
这种设计允许服务在不完全停止的情况下切换到更新的版本,从而极大地缩短了不可用时间,实现了接近于零停机的效果。参考:https://mp.weixin.qq.com/s/_rt1NP_LPfzatb0EYXry9Q。修改TestPortController 的返回值, 打个jar包, 启动新的jar包,,观察返回结果是否是修改后的返回值。原创 2024-12-16 19:15:00 · 2370 阅读 · 0 评论 -
EDA - Spring Boot构建基于事件驱动的消息系统
在微服务架构和大规模分布式系统中,事件驱动架构(EDA)成为了非常重要的设计模式。通过事件驱动,我们可以解耦系统的各个组件,提高系统的可扩展性、可维护性和响应能力。接下来,我们将演示一下如何在 Spring Boot 中实现一个基于事件驱动的消息发送和接收流程,从消息的发送、事件的发布到事件的监听。原创 2024-12-09 19:56:45 · 3229 阅读 · 0 评论 -
Plugin - 插件开发04_Spring Boot中的SPI机制与Spring Factories实现
首先,定义一个简单的服务接口,File;接着,我们创建几个实现类, 它们分别实现了接口。原创 2024-12-07 19:56:19 · 2929 阅读 · 0 评论 -
Plugin - 插件开发03_Spring Boot动态插件化与热加载
首先,我们需要定义一个插件接口,该接口为插件提供统一的方法。插件实现类将根据此接口进行开发。接口 IPlugin 包含一个方法 customPluginMethod,插件类可以通过实现该接口来定义具体的插件行为。原创 2024-12-07 16:22:42 · 3352 阅读 · 0 评论 -
SpringBoot - 优雅的实现【账号登录错误次数的限制和锁定】
/ 默认值依赖配置文件,可在此处设定默认值在服务的方法上添加自定义注解基于Spring Boot的账号登录错误次数限制和锁定功能,使用了Redis来存储登录失败次数和锁定状态,并通过自定义注解和AOP来实现切面逻辑。配置文件中可以灵活配置最大尝试次数和锁定时长。原创 2024-11-26 19:45:00 · 3782 阅读 · 0 评论 -
SpringBoot - 多环境打包与配置文件排除实践
在实际开发中,Spring Boot 项目通常需要适配不同的运行环境,例如开发环境、测试环境、生产环境等。这些环境下的配置可能包含敏感信息,例如数据库连接密码、API密钥等。因此,在项目打包时,我们不仅需要支持多环境配置,还要考虑如何排除敏感配置文件,以保证安全性。原创 2024-11-21 06:45:00 · 3747 阅读 · 0 评论 -
SpringBoot - spring.profiles.active最佳实践
在实际开发中,应用程序往往需要根据不同的环境(如开发环境、测试环境、生产环境等)加载不同的配置。Spring Boot 提供了一个强大的功能——多环境配置,通过指定当前应用运行的环境,简单又高效!是 Spring Boot 用来指定激活环境的核心配置属性。Spring Boot 会根据该属性的值动态加载对应的配置文件,决定应用程序运行时的行为。原创 2024-11-20 20:12:23 · 3929 阅读 · 0 评论 -
SpringBoot - 多环境打包最佳实践
实际开发中,应用程序通常需要部署到不同的运行环境中,例如 开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,通常需要对项目进行多环境配置。在Spring Boot项目中,实现多环境打包主要通过配置不同的环境文件,并在打包或启动时指定需要的环境参数。原创 2024-11-20 07:18:32 · 3230 阅读 · 0 评论 -
Spring Boot - 扩展点 EnvironmentPostProcessor源码分析及真实案例
EnvironmentPostProcessor 是 Spring Boot 提供的一个扩展点,用于在应用环境初始化过程中执行一些额外的处理。该接口允许开发者在初始化完成后、应用上下文加载之前,自定义和调整环境变量,这为配置和条件化应用设置提供了极大的灵活性。是一个非常简单的接口,仅包含一个方法。参数解释:当前 Spring 应用的对象,通过该参数可以访问和操作环境中的属性源。:Spring 应用的入口,提供对应用的一些基本信息和配置信息的访问。注解表明它是一个函数式接口,可以用 lambda 表达式实现。原创 2024-11-10 06:15:00 · 3478 阅读 · 0 评论 -
Spring Boot - 开启log-request-details详细记录调测Controller接口
在Spring Boot项目中,调试Controller接口的请求和响应信息可以极大地帮助开发人员排查问题并确保应用程序的安全性和性能。原创 2024-08-10 06:45:00 · 4346 阅读 · 0 评论 -
Spring Boot - 通过ServletRequestHandledEvent事件实现接口请求的性能监控
在Spring框架中,监控接口请求的性能可以通过事件实现。这种方法简单有效,能够帮助开发者实时跟踪和分析请求的性能。概述:自定义拦截器可以用来在请求处理的不同阶段(如请求前、请求后、请求完成后)添加额外的逻辑。实现步骤实现接口,覆盖其中的方法,如preHandlepostHandle、和。在这些方法中记录请求开始时间、结束时间,计算处理时间。将拦截器注册到Spring MVC配置中。示例代码@Override@Override。原创 2024-08-09 22:03:59 · 4631 阅读 · 0 评论 -
Spring Boot - 在Spring Boot中实现灵活的API版本控制(下)_ 封装场景启动器Starter
import org/*** 接口版本标识注解/*** 指定API的版本号。* 此方法返回一个整型数组,数组中的每个元素代表一个API版本号。* @return 代表API版本号的整数数组。/*** 接口版本标识注解/*** 指定API的版本号。* 此方法返回一个整型数组,数组中的每个元素代表一个API版本号。* @return 代表API版本号的整数数组。/*** 接口版本标识注解/*** 指定API的版本号。原创 2024-08-08 17:30:36 · 4830 阅读 · 0 评论 -
Spring Boot - 在Spring Boot中实现灵活的API版本控制(上)
实现方式:通过自定义注解标记API版本,并使用拦截器进行版本控制。步骤创建自定义注解创建版本拦截器@Override= null) {配置拦截器@Override在控制器中使用注解// 返回 V1 版本的产品列表// 返回 V2 版本的产品列表。原创 2024-08-07 21:00:19 · 5059 阅读 · 0 评论 -
Spring Boot - 优雅实现支持通配符和IP段的IP访问黑白名单机制
IP访问黑白名单机制在许多场景中是非常必要的,其主要目的在于提高系统的安全性和控制访问权限。以下是一些主要原因:1. 安全性防止恶意攻击通过限制特定IP地址的访问,可以有效防止DDoS攻击、暴力破解和其他形式的恶意访问。减少暴露面仅允许特定的可信IP访问系统,可以减少潜在攻击者的攻击面。2. 访问控制区分内部和外部访问在企业环境中,可以限制只有内部IP(例如公司局域网IP)才能访问某些敏感资源。按区域限制访问可以根据地理位置或区域限制访问,例如只允许来自特定国家的IP访问。原创 2024-07-26 20:15:00 · 4772 阅读 · 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 · 6563 阅读 · 0 评论 -
Java - 深入四大限流算法:原理、实现与应用
限流算法是一种在分布式系统中广泛使用的技术,用于控制对系统资源的访问速率,以保护系统免受恶意攻击或突发流量导致的过载。API 网关限流:在微服务架构中,API 网关通常是系统对外的唯一入口,需要限制单个用户或IP在一定时间内的请求次数,以保护后端服务不受恶意请求或突发流量的冲击。分布式系统中的服务限流:在分布式系统中,各个服务之间可能会有调用关系,通过限流可以控制服务间的调用频率,避免服务间因为调用过于频繁而造成的服务过载。微服务间的接口限流。原创 2024-01-21 11:43:20 · 7481 阅读 · 0 评论 -
Spring Boot - 利用Resilience4j-Circuitbreaker实现断路器模式_防止级联故障
Resilience4J 是一个针对 Java 8 应用程序的轻量级容错和弹性库。它设计用于在分布式系统中的服务之间提供弹性和容错性。Resilience4J 的名字来源于它提供的核心功能,即让系统(服务)能够“弹性”(resilient)地应对各种失败情况,包括网络问题、第三方服务故障等。断路器(Circuit Breaker):当检测到服务异常或超时,断路器会打开,阻止进一步的请求发送到该服务。一段时间后(通常是秒级),断路器会进入半开状态,允许一个测试请求通过以检查服务是否恢复。原创 2024-01-18 06:30:00 · 7894 阅读 · 0 评论 -
Spring Boot - 利用Resilience4j-RateLimiter进行流量控制和服务降级
Resilience4J 是一个针对 Java 8 应用程序的轻量级容错和弹性库。它设计用于在分布式系统中的服务之间提供弹性和容错性。Resilience4J 的名字来源于它提供的核心功能,即让系统(服务)能够“弹性”(resilient)地应对各种失败情况,包括网络问题、第三方服务故障等。断路器(Circuit Breaker):当检测到服务异常或超时,断路器会打开,阻止进一步的请求发送到该服务。一段时间后(通常是秒级),断路器会进入半开状态,允许一个测试请求通过以检查服务是否恢复。原创 2024-01-15 05:45:00 · 8347 阅读 · 0 评论 -
Spring Boot - Application Events 同步 VS 异步 发布订阅事件实战
这允许你将任务标记为异步,并且可以在不同的线程中执行它们,从而提高应用程序的响应能力和吞吐量。注解允许你定义一个自定义的线程池,Spring 会使用这个线程池来执行异步任务。时,它将在一个单独的线程中运行,而不是在调用它的线程中立即执行。是一个在 Spring 框架中使用的注解,它用于启用 Spring 的异步执行功能。注解来标记一个方法为异步执行。当方法被调用时,它将在一个单独的线程中运行,而不是在调用线程中立即执行。是一个方法级别的注解,在 Spring 框架中用于标识一个方法应该以异步方式执行。原创 2024-01-13 21:04:39 · 7545 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationFailedEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-13 17:12:50 · 7084 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationReadyEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-13 10:00:00 · 8103 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_AvailabilityChangeEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-13 08:45:00 · 6527 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationStartedEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-13 07:30:00 · 7355 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ContextRefreshedListener
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-13 06:15:00 · 7009 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationPreparedEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-12 20:30:00 · 7979 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationContextInitializedEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-12 05:45:00 · 8005 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-11 22:15:00 · 7521 阅读 · 0 评论 -
Spring Boot - Application Events 的发布顺序_ApplicationStartingEvent
Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦,使得应用程序中的不同组件可以独立地改变和复用逻辑,而无需直接进行通信。在 Spring Boot 中,事件发布和监听的机制是通过以及事件发布者()来实现的。其中,ApplicationEvent 是所有自定义事件的基础,自定义事件需要继承自它。是监听特定事件并做出响应的接口,开发者可以通过实现该接口来定义自己的监听器。事件发布者(通常由 Spring 的。原创 2024-01-11 20:15:00 · 7536 阅读 · 0 评论 -
Spring Boot - 瘦身大作战:优雅应对Spring Boot Fat Jar
类是特殊的引导程序类,用作可执行jar的主要入口点。它是jar文件中的实际Main-Class,用于设置适当的URLClassLoader并最终调用main()方法。MODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher。它们的目的是从目录中的嵌套jar文件或war文件(而不是在类路径中显式的文件)加载资源(.class文件等)。WAR,即通常的可执行war,需要的servlet容器依赖位于WEB-INF/lib-provided。原创 2023-11-25 07:45:00 · 7714 阅读 · 0 评论 -
Spring Boot - Rest VS GraphQL
REST(Representational State Transfer)和GraphQL都是用于构建Web服务的API设计和交互方式,它们有不同的特点和优劣势。架构风格:REST是一种架构风格,强调资源的状态和标识的分离,它通常基于HTTP协议来进行通信。资源导向:REST API将应用程序的数据建模为一组资源,每个资源都有唯一的URL标识,例如/users/1表示用户1的信息。原创 2023-09-18 06:15:00 · 9384 阅读 · 0 评论 -
每日一博 - 闲聊 API GateWay
API 网关可以将不同的通信协议进行转换,使得前端客户端可以使用不同的通信协议(如HTTP、WebSocket、gRPC等)与后端服务进行通信,而无需直接处理协议转换的复杂性。总之,API 网关在微服务架构中起到了关键的作用,它提供了一种统一的入口点,用于管理、保护、监控和优化API的访问,有助于构建可扩展、高可用性和安全性的分布式应用程序。:API 网关可以对请求和响应进行转换,例如,将数据从一个格式转换为另一个格式(如JSON到XML),或者对请求进行参数验证和修改,以适应后端服务的需求。原创 2023-09-15 19:45:00 · 9228 阅读 · 0 评论 -
Spring Boot - 用JUnit 5构建完美的Spring Boot测试套件
JUnit 4和JUnit 5之间的一些重要区别,JUnit 5引入了许多新的功能和改进,以提供更灵活、强大的测试框架。你可以根据项目的需要选择适合的JUnit版本。这些示例演示了如何使用这些注解来编写JUnit 5和Spring Boot测试。您可以根据您的具体需求和测试场景进行相应的配置和使用。以下是JUnit 4和JUnit 5注解之间的一些主要区别。原创 2023-09-11 23:45:00 · 10407 阅读 · 0 评论 -
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
迁移到 JUnit 5 需要一些工作,特别是如果你的项目已经使用了 JUnit 4。最佳选择取决于你的具体需求和项目的情况。如果你正在开始一个新项目,那么考虑使用 JUnit 5,因为它提供了更多的功能和灵活性。如果你的项目已经使用 JUnit 4,那么可以逐步迁移到 JUnit 5,以便利用新功能和改进。当然了1.0.0.RELEASE ~ 1.0.3.RELEASE的版本也是使用的 junit4 (版本不同) ,只是没有提供 @SpringBootTest注解。我这里用的是 2022。原创 2023-09-11 22:15:00 · 10004 阅读 · 0 评论 -
Spring - DisposableBean扩展接口
Spring Boot - 扩展接口一览扩展点只有一个方法,触发时机为当此对象销毁时,会自动执行该方法。比如说运行时,就会触发这个方法。当Spring容器销毁时,会将容器中的所有单例bean先全部销。调用链如下:继续继续 重点调用bean的封装类方法总结一下:先从对象中获取当前bean对象转化成对象,然后直接调用方法;然后再通过反射调用bean配置的方法原创 2022-12-08 06:30:00 · 33261 阅读 · 1 评论 -
Spring Boot - ApplicationRunner && CommandLineRunner扩展接口
Spring Boot - 扩展接口一览接口也只有一个方法:如果有多个,可以利用@Order来进行排序, 按照中的value值从小到大依次执行。触发时机为整个项目启动完毕后(执行时机为容器启动完成的时候),自动执行。扩展此接口,进行启动项目之后一些业务的预处理。继续 核心方法 OK, CLEARCommandLineRunner原创 2022-12-07 21:21:07 · 32919 阅读 · 0 评论 -
Spring - SmartInitializingSingleton扩展接口
Spring Boot - 扩展接口一览触发时机只有一个方法,其作用是是 在spring容器管理的所有单例对象(非懒加载对象)初始化完成之后调用的回调接口。其触发时机为之后。可以扩展此接口在对所有单例对象初始化完毕后,做一些后置的业务处理在Spring容器启动时,会调用方法;重点看 继续继续扩展示例原创 2022-12-07 06:45:00 · 33004 阅读 · 0 评论