spring
文章平均质量分 85
一叶飘零_sweeeet
大家好,我是果酱(ken),公众号:“果酱桑” 。专注 Java 开发与云原生技术领域,持续分享技术实现方案、实战问题排查、干货心得及前沿动态。已入驻阿里云、稀土掘金、个人公众号等平台,博文同步更新~ 若有技术疑问、经验交流或方向指导,欢迎评论区探讨!以技术为桥,共赴成长之路,期待与你一起深耕技术、To be is to do !共同进步~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
吃透 Spring 体系结构
Spring 体系结构并非孤立的模块堆砌,而是以“IOC容器”为核心、以“AOP”为扩展手段,层层递进、相互支撑的完整生态。理解Spring体系结构,关键在于抓住“IOC解耦”和“AOP复用”两大核心思想,明确各模块的定位和依赖关系。原创 2025-12-24 15:46:47 · 896 阅读 · 0 评论 -
Spring Batch实战全解析:从入门到精通,搞定企业级批处理难题
本文全面介绍了SpringBatch框架在企业级批处理应用中的核心技术与实战方案。文章首先阐述了批处理的典型特征(无交互性、海量数据、可靠性等)和SpringBatch的核心优势(轻量化、可扩展、事务安全等),并通过对比其他批处理方案突出其适用性。随后详细解析了SpringBatch的核心架构,包括JobLauncher、Job、Step等组件的职责分工,以及批处理执行流程。原创 2025-12-18 16:42:10 · 972 阅读 · 0 评论 -
深入 Spring 内核:解密 15 种设计模式的实战应用与底层实现
Spring框架深度解析了15种核心设计模式的应用,包括:工厂模式(BeanFactory)、单例模式(Bean管理)、代理模式(AOP实现)、适配器模式(SpringMVC请求处理)、装饰器模式(功能增强)、观察者模式(事件机制)、策略模式(资源加载)、模板方法模式(JdbcTemplate等)、责任链模式(拦截器)等。文章通过代码示例详细展示了每种模式在Spring中的具体实现方式,如FactoryBean的工厂方法、三级缓存的单例管理、动态代理的AOP机制等。原创 2025-10-18 16:29:27 · 1365 阅读 · 0 评论 -
揭秘 Spring 三级缓存:从源码到实战,彻底搞懂循环依赖的终极解决方案
本文深入解析了Spring三级缓存机制解决循环依赖的原理与实现。详细介绍了三级缓存(singletonObjects、earlySingletonObjects、singletonFactories)的分工与协作,通过实例演示了循环依赖的解决过程,并分析了AOP场景下的特殊处理。文章还探讨了三级缓存无法解决的构造器循环依赖和原型Bean循环依赖问题,提供了最佳实践建议。通过源码分析揭示核心处理逻辑,帮助开发者不仅学会使用三级缓存,更能理解其设计思想。原创 2025-10-17 16:59:30 · 1006 阅读 · 0 评论 -
从入门到精通:Spring AOP 与 AspectJ 的 “爱恨情仇“——90% 开发者都踩过的坑全解析
本文深入对比了Spring AOP与AspectJ的核心差异与适用场景。Spring AOP基于动态代理实现,仅支持方法级别的拦截,与Spring生态无缝集成但存在自调用问题和性能开销;AspectJ通过字节码增强实现,支持更全面的连接点类型(字段访问、构造器等)且性能更优,但配置较复杂。文章从实现原理、功能范围、性能对比等维度展开分析,并提供了混合使用的最佳实践方案:常规场景优先使用Spring AOP,对性能敏感或需要特殊连接点的场景选用AspectJ,同时给出了自调用问题等常见场景的解决方案。原创 2025-10-15 15:56:31 · 781 阅读 · 0 评论 -
深入浅出 Spring 事务:从源码到实战,解密 @Transactional 的 “黑魔法“
本文深入解析Spring事务管理机制,从数据库ACID特性出发,剖析了Spring事务的实现原理与核心组件。通过@Transactional注解的传播行为、隔离级别等属性分析,结合完整电商订单案例,演示了事务在实际开发中的应用。文章重点探讨了事务不生效的常见原因、并发问题及解决方案,并总结了最佳实践建议:合理设置事务属性、正确处理异常、缩小事务范围等。最后针对分布式系统场景,介绍了2PC、TCC等分布式事务解决方案,帮助开发者在保证数据一致性的同时兼顾系统性能。原创 2025-10-14 14:43:28 · 1340 阅读 · 0 评论 -
Spring 事务传播机制
本文全面解析Spring事务传播机制,深入剖析7种事务传播行为及其应用场景。从基础概念到实现原理,详细讲解REQUIRED、SUPPORTS等传播行为的特点和使用方法。通过订单创建、分布式事务等实战案例,展示如何设计合理的事务边界。针对自调用失效、异常处理等常见问题提供解决方案,并给出传播行为选择原则和性能优化建议。掌握这些知识能帮助开发者在复杂业务场景中构建可靠的数据一致性方案,是Java后端开发的核心技能之一。原创 2025-10-13 17:03:59 · 823 阅读 · 0 评论 -
从 “死锁“ 到 “解耦“:重构中间服务破解 Java 循环依赖难题
Java系统开发中,循环依赖是常见问题,会导致系统启动失败、代码可维护性下降。本文通过电商系统案例,深入分析订单与库存服务的循环依赖问题,提出四种解决方案并重点推荐拆分中间服务的方法。该方法将交叉逻辑抽取为独立服务OrderInventoryMediator,实现单向依赖,彻底解决循环问题。方案遵循单一职责、依赖倒置等原则,显著提升代码可维护性和可测试性。文章包含完整代码示例、数据库脚本和测试用例,为处理类似问题提供可直接落地的实践方案。相比@Lazy注解或字段注入等临时方案,这种重构方式更彻底。原创 2025-10-08 15:45:40 · 1116 阅读 · 0 评论 -
引入 WebSocket 后 Spring 线程池突然消失?从源码深挖到落地解决(附 JDK17 完整实例)
本文深入分析了SpringBoot+WebSocket项目中线程池注入失败的常见问题。通过源码追踪发现,WebSocket的自动配置会创建Executor类型Bean,导致Spring默认线程池applicationTaskExecutor因条件不满足而无法创建。文章提供了三种解决方案:推荐方案是显式定义自定义线程池(附完整配置代码);其次可复用WebSocket线程池;最后介绍了强制启用默认线程池的方法(不推荐)。原创 2025-08-28 15:15:44 · 778 阅读 · 0 评论 -
Java 微服务 AI 集成:LangChain4j 与 SpringAI
本文对比了Java生态中两大AI集成框架LangChain4j与SpringAI的核心架构与实战应用。LangChain4j定位为灵活通用的LLM交互框架,支持多模型调用和链式处理;SpringAI则深度集成Spring生态,提供自动化配置和统一客户端抽象。从环境搭建到微服务集成,文章详细展示了两者在智能问答、多轮对话、语义搜索等场景的实现方案,并进行了性能对比与适用场景分析。最后提出了微服务中AI集成的最佳实践,包括性能优化、安全考虑和监控方案,为开发者选择框架提供指导建议。原创 2025-08-27 15:42:27 · 1711 阅读 · 0 评论 -
从 “容器基石” 到 “全能管家”:深度解析 Spring 中 ApplicationContext 与 BeanFactory 的本质区别
本文深入对比了Spring框架中两种核心容器BeanFactory和ApplicationContext的区别。BeanFactory作为基础容器接口仅提供Bean管理的核心功能,采用延迟加载策略;而ApplicationContext作为增强版容器,扩展了国际化、事件机制、资源加载等企业级功能,采用预加载策略。文章从7个维度进行详细对比,包括功能范围、初始化策略、异常处理、扩展机制等,并通过代码示例验证了它们的差异。原创 2025-08-22 15:37:41 · 742 阅读 · 0 评论 -
Spring 容器启动的 10 大核心步骤:从源码到实战的深度剖析
本文深入解析了Spring容器的启动流程,将其拆解为11个核心步骤:从初始化容器实例、设置配置源、刷新容器入口,到准备BeanFactory、执行后置处理器、注册Bean处理器,再到初始化消息源和事件机制、实例化单例Bean,最后完成刷新并发布就绪事件。文章通过源码分析和实战示例,揭示了Spring容器从初始化到就绪的全过程,帮助开发者理解这个"黑箱"机制。掌握容器启动流程能提升问题排查能力、性能优化能力和框架扩展能力,是深入理解Spring框架的关键。原创 2025-08-21 15:26:34 · 756 阅读 · 0 评论 -
揭秘 Spring 自动装配的 7 种神功:从 XML 到注解,从入门到精通的终极指南
本文系统介绍了Spring框架中的自动装配技术,涵盖XML配置、注解驱动和Java配置类三种主要方式。详细解析了byName、byType、constructor等7种自动装配策略及其应用场景,对比了@Autowired、@Resource等核心注解的异同。文章还深入探讨了条件装配、集合注入等高级特性,并针对多类型匹配问题提供了@Primary、@Qualifier等解决方案。最后总结了各种装配方式的优缺点和最佳实践,强调在便捷性与可读性之间寻求平衡,帮助开发者根据项目需求选择最合适的自动装配方案。原创 2025-08-21 14:17:18 · 602 阅读 · 0 评论 -
Autowired vs Resource:Spring 依赖注入的 “双胞胎“ 之争,99% 的开发者都没完全搞懂!
Spring框架中的依赖注入两大核心注解@Autowired与@Resource存在显著差异:@Autowired是Spring原生注解,采用类型优先的注入策略,支持构造器注入和集合注入等高级特性;@Resource来自JSR-250标准,采用名称优先策略,具有更好的跨框架兼容性。两者在匹配规则、处理多Bean冲突、高级特性等方面各有侧重,开发者应根据项目需求(如纯Spring环境、跨框架兼容性、精确控制注入等)合理选择。原创 2025-08-21 11:13:36 · 868 阅读 · 0 评论 -
揭秘 Spring 事务黑科技:从底层原理到实战落地
本文深入解析了Spring事务管理的核心机制与最佳实践。首先介绍了事务ACID特性及其重要性,阐述了Spring事务管理的核心架构,包括PlatformTransactionManager、TransactionDefinition和TransactionStatus三大接口。重点分析了7种事务传播行为的使用场景和5种隔离级别对并发问题的影响,详细对比了编程式与声明式事务的实现方式。原创 2025-08-21 09:59:11 · 800 阅读 · 0 评论 -
SPI 机制深度剖析:Java、Spring、Dubbo 的服务发现哲学与实战指南
SPI(服务提供接口)机制是Java生态中实现插件化扩展的核心技术,通过解耦接口与实现,支持动态加载服务实现。本文深入对比了三种主流SPI实现:Java原生SPI提供基础服务发现,通过ServiceLoader加载META-INF/services下的配置;SpringSPI增强为集中式spring.factories配置,支持按类型加载和排序;DubboSPI则扩展出别名、自适应扩展、IOC/AOP等高级特性。原创 2025-08-20 14:51:49 · 980 阅读 · 0 评论 -
本地想不让Config 配置类生效,怎么处理?
本文介绍了4种在本地开发环境中禁用XXL-Job执行器配置的方法:1)通过@SpringBootApplication的exclude属性排除配置类;2)使用@Profile注解限定配置仅在生产/测试环境生效;3)在本地配置文件中禁用执行器注册;4)临时注释@Configuration注解。其中方法1和方法2最为推荐,既能彻底禁用配置,又不影响代码提交和其他环境运行。方法3通过配置文件控制,方法4则适合短期调试。开发者可根据实际需求选择最合适的方案,其中注解排除和环境隔离是最规范的做法。原创 2025-08-07 18:03:00 · 296 阅读 · 0 评论 -
Spring 事务与 MySQL 事务:深度解析与实战指南
事务是一个逻辑工作单元,它包含了一组数据库操作,这些操作要么全部成功执行,要么全部回滚,以保证数据的一致性和完整性。例如,在银行转账系统中,从一个账户转出资金并转入另一个账户的操作就应该在一个事务中进行,以确保资金的正确转移,不会出现部分操作成功而部分操作失败的情况。Spring 事务与 MySQL 事务的结合为企业级应用开发提供了强大的事务管理功能。原创 2024-09-19 21:52:00 · 1802 阅读 · 0 评论 -
你是否了解Spring @EventListener注解?
EventListener是一个用于标记方法的注解,它表示该方法是一个事件监听器。当触发特定类型的事件时,带有@EventListener注解的方法将被自动调用。这个注解可以应用在任何Spring管理的Bean的方法上,包括普通的Bean、Service组件或者通过@Component注解定义的Bean。通过使用@EventListener注解,我们可以轻松地在Spring应用程序中实现事件处理。我们定义了一个事件类表示感兴趣的事件,创建了一个事件发布者来发布事件,并编写了一个监听器来处理特定类型的事件。原创 2023-11-20 19:46:45 · 386 阅读 · 0 评论 -
Spring缓存深入解析:@Cacheable的使用详解
在计算机科学中,缓存是一种存储技术,用于保存经常使用的数据,以便在后续请求中快速访问。在Web开发中,缓存被广泛用于减少对数据库的访问,提高应用程序的响应速度。在本文中,我们详细介绍了Spring中的@Cacheable注解。通过使用@Cacheable注解,我们可以轻松地将方法的执行结果存储在缓存中,从而提高应用程序的响应速度。然而,使用@Cacheable注解时,还需要注意数据一致性、缓存穿透和缓存雪崩等问题。希望本文能够帮助你更好地理解和使用Spring中的@Cacheable注解。原创 2023-08-23 17:24:18 · 4258 阅读 · 0 评论 -
Spring Bean的作用域
Spring框架中,Bean的作用域是一个重要的概念,它决定了Spring容器如何新建Bean的实例。本文将详细解析Spring Bean的各种作用域,包括singleton、prototype、request、session和application,并通过示例代码进行详细的解释。原创 2023-08-15 17:34:07 · 360 阅读 · 0 评论 -
深入理解依赖注入
依赖注入(Dependency Injection,简称DI)是一种实现控制反转(Inversion of Control,简称IoC)的技术。在面向对象编程中,类的依赖关系通常是通过在类内部直接创建依赖对象来实现的,这种方式会导致代码之间的耦合度很高。而依赖注入则是将依赖对象的创建和绑定的过程交给容器来完成,从而实现了类的依赖关系和类本身的解耦。原创 2023-08-15 17:09:57 · 1347 阅读 · 0 评论 -
Spring容器启动时的开放接口
Spring框架是一个开放性的框架,它提供了许多开放接口,使得开发者可以在Spring容器启动时进行定制化的操作。原创 2023-08-15 16:48:43 · 302 阅读 · 0 评论 -
Spring中BeanFactory, FactoryBean,ApplicationContext的区别
Spring中BeanFactory, FactoryBean,ApplicationContext的区别原创 2023-08-15 16:43:04 · 971 阅读 · 0 评论 -
Spring中使用@Async引发的循环依赖问题及解决方案
Spring中使用@Async引发的循环依赖问题及解决方案原创 2023-08-15 16:28:17 · 1061 阅读 · 0 评论 -
Spring如何解决循环依赖
Spring通过使用三级缓存,有效地解决了循环依赖的问题。这种解决方案既简单又有效,大大降低了开发的复杂度。然而,虽然Spring提供了解决循环依赖的方案,但我们在开发过程中还是应该尽量避免产生循环依赖,这样可以使系统的设计更加清晰,更易于维护。原创 2023-08-15 16:15:52 · 191 阅读 · 0 评论 -
Spring Bean的生命周期
Spring Bean的生命周期涉及实例化、属性赋值、初始化、使用和销毁等阶段。了解Spring Bean的生命周期对于理解Spring框架的工作原理和优化应用程序非常重要。通过合理地管理Bean的生命周期,我们可以确保Bean在正确的时间进行初始化和销毁,从而提高应用程序的性能和稳定性。原创 2023-08-15 15:56:39 · 204 阅读 · 0 评论 -
设计模式在Spring中的应用
设计模式是软件开发中经过验证的解决方案,用于解决常见的设计问题。Spring框架是一个功能强大的Java开发框架,它广泛应用了各种设计模式。原创 2023-08-10 18:04:49 · 448 阅读 · 0 评论 -
Spring事件机制详解
Spring事件机制是基于观察者模式实现的。在该模式中,存在两种角色:事件源(Publisher)和事件监听器(Listener)。事件源负责发布事件,而事件监听器则负责订阅并处理事件。Spring的事件机制允许开发人员在应用程序中定义自己的事件,并将其发布给感兴趣的监听器。当事件发生时,所有订阅了该事件的监听器都会收到通知,并执行相应的操作。这种松耦合的通信方式使得应用程序的各个组件可以更加灵活地协作。Spring事件机制是一种强大的通信方式,可以实现应用程序中各个组件之间的松耦合通信。原创 2023-08-05 12:34:39 · 1109 阅读 · 0 评论 -
解决Spring循环依赖
循环依赖是指两个或多个Bean之间相互依赖,形成了一个循环的依赖关系。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A,它们之间形成了一个循环的依赖链。这种情况下,Spring容器无法解析这个循环依赖关系,从而导致应用程序无法正确初始化这些Bean。Spring循环依赖是一个常见的问题,但通过合适的解决方案可以避免。在设计应用程序时,应尽量避免循环依赖的出现。如果无法避免,可以使用构造函数注入、Setter注入、@Lazy注解或代理对象来解决循环依赖的问题。原创 2023-07-28 15:13:15 · 2049 阅读 · 0 评论 -
Spring AOP 的用途
Spring AOP是Spring框架的一个重要模块,用于实现面向切面编程。它通过在运行时动态地将切面织入到目标对象的方法调用中,实现了横切关注点的统一处理。Spring AOP基于代理模式实现,可以在不修改源代码的情况下,对目标对象的方法进行增强。Spring AOP的核心概念包括切面(Aspect)、连接点(Join Point)、切点(Pointcut)、通知(Advice)和织入(Weaving)。原创 2023-07-21 11:06:21 · 2894 阅读 · 0 评论 -
Spring事务失效的各种场景
Spring事务失效可能会导致数据不一致和错误的结果。在本文中,我们讨论了几种常见的Spring事务失效场景,包括不合适的事务传播行为、异常未被捕获或未抛出、方法内部调用不会触发事务、事务方法被同类中的非事务方法调用、事务方法被同类中的静态方法调用以及事务方法被外部类中的方法调用。我们提供了详细的解释和Java示例,并介绍了如何通过适当的配置和管理事务来避免事务失效的问题。在使用Spring事务时,我们应该仔细考虑事务的传播行为,并确保在方法中正确处理异常和显式抛出异常。原创 2023-07-19 16:19:41 · 4451 阅读 · 0 评论 -
手写Spring容器
手写Spring容器原创 2023-07-14 14:53:03 · 3290 阅读 · 0 评论
分享