标签: spring

10 篇文章

Spring依赖注入的几种方式详解
在Spring框架中,依赖注入(Dependency Injection,简称DI)是控制反转(Inversion of Control,简称IoC)的核心实现方式。它通过将对象的依赖关系由自身创建改为外部容器注入,降低了组件间的耦合度,提高了代码的可维护性和可测试性。本文将详细介绍Spring中常用的几种依赖注入方式,包括构造器注入、Setter…
SpringBoot整合MinIO:从基础到分片上传的完整技术方案
一、MinIO简介与优势 MinIO是一款基于Go语言开发的高性能、分布式对象存储系统,完全兼容Amazon S3 API协议。作为开源项目,它采用Apache License v2.0协议,非常适合存储大容量非结构化数据,如图片、视频、日志文件等。 核心优势: 轻量级:二进制文件小,部署简单,资源要求低 高性能:通过优化的存储引擎和缓存机制提供极…
一文带你搞懂Spring Boot事件总线
一、事件总线核心概念 SpringBoot事件总线基于发布-订阅模式(Publish-Subscribe)实现组件间松耦合通信,其核心设计思想体现在三个维度:解耦性、异步处理和观察者模式扩展。 核心组件 事件(Event):继承ApplicationEvent的自定义类,封装需要传递的业务数据。建议使用final字段确保线程安全,包含完整业务上下文…
Spring定时任务的几种实现方式详解
一、引言 在Spring框架中,定时任务是日常开发中不可或缺的功能,常用于数据同步、日志清理、消息推送等场景。Spring提供了多种定时任务实现方式,从简单的注解配置到功能强大的Quartz框架,满足不同复杂度的业务需求。本文将详细介绍Spring定时任务的几种核心实现方式,帮助开发者根据实际场景选择合适的技术方案。 二、基于@Scheduled注…
SpringBoot整合RabbitMQ:动态创建队列与动态监听实战指南
一、引言 在分布式系统架构中,消息队列作为异步通信的核心组件,承担着系统解耦、流量削峰、异步处理等重要职责。RabbitMQ作为业界广泛使用的开源消息中间件,通过SpringBoot集成可以快速实现消息队列的创建与管理。然而,传统的静态配置方式存在灵活性不足的问题,当需要根据业务需求动态创建队列或动态调整监听策略时,静态配置就显得力不从心。 本文将…
Spring Boot动态注入删除bean
概述 因为如果采用配置文件或者注解,我们要加入对象的话,还要重启服务,如果我们想要避免这一情况就得采用动态处理bean,包括:动态注入,动态删除。 动态注入bean思路 在具体进行代码实现的时候,我们要知道,Spring管理bean的对象是BeanFactory,具体的是DefaultListableBeanFactory,在这个类当中有一个注入b…
Spring的声明式事务在多线程的场景当中会失效,那怎么解决呢?
Spring的声明式事务在多线程场景中确实会失效,主要是由于事务管理依赖于ThreadLocal存储连接。以下是详细的失效原因和解决方案: 1. 失效原因分析 @Service public class UserService { @Transactional public void processInNewThread() { new Threa…
Spring如何解决循环依赖问题?
Spring 通过三级缓存机制解决单例 Bean 的循环依赖问题,但仅适用于通过 setter/字段注入的循环依赖,构造器注入的循环依赖无法通过三级缓存解决。 一、三级缓存结构 // Spring 中的三级缓存 public class DefaultSingletonBeanRegistry { // 一级缓存:存放完全初始化好的 Bean(成品…