spring多数据源动态切换的实现原理及读写分离的应用spring多数据源动态切换的实现原理及读写分离的应用
简介
AbstractRoutingDataSource是Spring框架中的一个抽象类,可以实现多数据源的动态切换和路由,以满足复杂的业务需求和提高系统的性能、可扩展性、灵活性。
应用场景
多租户支持:对于多租户的应用,根据当前租户来选择其对应的数据源,实现租户级别的隔离和数据存储。
分库分...[2023/8/11]
SpringBoot3文件管理
目录一、简介二、工程搭建1、工程结构2、依赖管理三、上传下载1、配置管理2、上传下载四、Excel文件1、Excel创建2、Excel读取3、解析监听4、导入导出五、参考源码
标签:上传.下载.Excel.导入.导出;
一、简介
在项目中,文件管理是常见的复杂功能;
首先文件的类型比...[2023/8/11]
SpringBoot3分库分表SpringBoot3分库分表
标签:ShardingSphere5.分库.分表;
一、简介
分库分表的设计和实现方式,在之前的内容中总结过很多,本文基于SpringBoot3和ShardingSphere5框架实现数据分库分表的能力;
不得不提ShardingSphere5文档中描述的两个基本概念:
垂直分片
...[2023/8/11]
三万字盘点Spring 9大核心基础功能三万字盘点Spring 9大核心基础功能
大家好,我是三友~~
今天来跟大家聊一聊Spring的9大核心基础功能。
其实最近有小伙伴私信问我怎么不写文章了,催更来了
其实我不是不写,而是一直在写这篇文章,只不过令我没想到的是,从前期的选题、准备、翻源码、动手到写完,前后跨度接近一个月的时间,花了好几个周末,写了三万字,最终才算完...[2023/8/4]
策略模式+Spring配置类优化多if..else思路
图示
1. 现状
场景: 假设设备上报不同类型的消息,我们要对不同类型的消息做不同的处理。如果我们通过if..else的方式处理的话会显得比较冗余。
例如:
if("alarmEvent".equals(msg)){
处理告警消息逻辑 ...
}else if("devi...[2023/7/28]
你真正了解Spring的工作原理吗
Spring
1.1 什么是Spring IOC 和DI ?
① 控制反转(IOC):Spring容器使用了工厂模式为我们创建了所需要的对象,我 们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控 制反转的思想...[2023/7/26]
你的Spring应用启动很慢?不妨试试这个工具!
睡不着闲逛,在GitHub上看到一个挺实用的开源项目:Spring Startup Analyzer。
从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具。Spring Startup Analyzer通过采集Spring应用启动过程的数据,进而生成一个交互式的分析报告,帮助...[2023/7/24]
聊聊Spring注解@Transactional失效的那些事
一、前言
emm,又又又踩坑啦。这次的需求主要是对逾期计算的需求任务进行优化,现有的计算任务运行时间太长了。简单描述下此次的问题:在项目中进行多个数据库执行操作时,我们期望的是将其整个封装成一个事务,要么全部成功,或者全部失败,然而在自测异常场景时发现,里面涉及的第一个数据状态更新成功了,但是后...[2023/7/19]
再见RestTemplate,Spring 6.1新特性:RestClient 了解一下!再见RestTemplate,Spring 6.1新特性:RestClient 了解一下!
在最近发布的Spring 6.1 M2版本中,推出了一个全新的同步HTTP客户端:RestClient。用一句话来让Spring开发者认识RestClient的话:像WebClient一样具备流畅API的RestTemplate。所以,RestClient的使命就是淘汰已经有14年历史的Rest...[2023/7/19]
Spring 中 Bean 的配置细节
前言
大家好,我是 god23bin,今天继续说 Spring 的内容,关于 Spring 中 Bean 的配置的,通过上一篇文章的学习,我们知道了 Spring 中的依赖注入,其中有两种主要的方式,分别是基于构造方法的 DI 和 基于 Setter 的 DI。
我们知道,当写完一个普通的 J...[2023/7/10]
Spring原理之web.xml加载过程Spring原理之web.xml加载过程
web.xml是部署描述文件,它不是Spring所特有的,而是在Servlet规范中定义的,是web应用的配置文件。web.xml主要是用来配置欢迎页、servlet、filter、listener等以及定制servlet、JSP、Context初始化参数。
启动一...[2023/7/5]
Spring Cloud Gateway编码实现任意地址跳转
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
作为《Spring Cloud Gateway实战》系列的第十四篇,本文会继续发掘Spring Cloud Gateway的潜力,通过编...[2023/6/28]
Spring源码核心剖析
前言
SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAOP只是在AOP的基础上将能力集成到SpringIOC中,使其作为bean的一种,从而我们能够很方便的进行使用。
一、S...[2023/6/21]
Spring Cloud灰度部署Spring Cloud灰度部署
1、背景(灰度部署)
在我们系统发布生产环境时,有时为了确保新的服务逻辑没有问题,会让一小部分特定的用户来使用新的版本(比如客户端的内测版本),而其余的用户使用旧的版本,那么这个在Spring Cloud中该如何来实现呢?
负载均衡组件使用:Spring Cloud LoadBalancer
...[2023/6/21]
一种实现Spring动态数据源切换的方法一种实现Spring动态数据源切换的方法
1 目标
不在现有查询代码逻辑上做任何改动,实现dao维度的数据源切换(即表维度)
2 使用场景
节约bdp的集群资源。接入新的宽表时,通常uat验证后就会停止集群释放资源,在对应的查询服务器uat环境时需要查询的是生产库的表数据(uat库表因为bdp实时任务停止,没有数据落入),只进行服务器...[2023/6/19]
揭秘Spring依赖注入和SpEL表达式
摘要:在本文中,我们深入探讨了Spring框架中的属性注入技术,包括setter注入、构造器注入、注解式属性注入,以及使用SpEL表达式进行属性注入。
本文分享自华为云社区《Spring高手之路3——揭秘Spring依赖注入和SpEL表达式》,作者:砖业洋__ 。
在本文中,我们深入探讨了Sp...[2023/6/12]
Spring事件监听机制使用和原理解析
你好,我是刘牌!
前言
好久没有更新Spring了,今天来分享一下Spring的事件监听机制,之前分享过一篇Spring监听机制的使用,今天从原理上进行解析,Spring的监听机制基于观察者模式,就是就是我们所说的发布订阅模式,这种模式可以在一定程度上实现代码的解耦,如果想要实现系统层面的解耦...[2023/6/12]
2023最新IntellJ IDEA诺依SpringCloud开发部署文档(保姆级别)
目录若依RuoYi v3.6.2部署文档一、环境构建二、模块描述三、部署后端1、下载到本地。2、MySQL导入数据。3、Nacos修改(1)保证本地Nacos下载安装成功,修改本地Nacos的application.properties。(2)启动本地的Nacos.4、启动本地的Redis5、启...[2023/6/5]
Spring源码:Bean生命周期(终章)
前言
本系列前面讲解了Spring的bean定义、bean实例化、bean初始化等生命周期。这些步骤使我们能够了解bean从创建到准备好使用所经历的过程。但是,除了这些步骤,bean的销毁也是非常重要的一步。在本系列的最后,我们将深入探讨bean的销毁过程,包括在什么情况下会发生销毁、销毁的顺序...[2023/5/25]
什么是 Spring?为什么学它?
前言
欢迎来到本篇文章!在这里,我将带领大家快速学习 Spring 的基本概念,并解答两个关键问题:什么是 Spring,以及为什么学习 Spring。
废话少说,下面,我们开始吧!
Spring 官方文档:https: docs.spring.io pring-framework/doc...[2023/5/25]
spring之AOP的概念及简单案例
AOP概念
AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发...[2023/5/22]
天下苦 Spring 久矣,Solon v2.2.20 发布
Solon 是什么框架?
一个,Java 新的生态型应用开发框架。它从零开始构建,有自己的标准规范与开放生态。与其他框架相比,它解决了两个重要的痛点:启动慢,费资源。
解决痛点?
由于Solon Bean容器的独特设计,不会因为扩展依赖变多而启动很慢(开发调试时,爽快)!以开源项目“小诺”为例...[2023/5/22]
Spring源码:Bean生命周期(五)
前言
在上一篇文章中,我们深入探讨了 Spring 框架中 Bean 的实例化过程,该过程包括从 Bean 定义中加载当前类、寻找所有实现了 InstantiationAwareBeanPostProce or 接口的类并调用实例化前的方法、进行实例化、调用 applyMergedBeanDef...[2023/5/17]
这个字段我明明传了呀,为什么收不到 - Spring 中首字母小写,第二个字母大写造成的参数问题
问题现象
vSwitchId、uShape、iPhone... 这类字段名,有什么特点?很容易看出来吧,首字母小写,第二个字母大写。它们看起来确实是符合 Java 中对字段所推崇的“小驼峰命名法”,即第一个单词小写,后面的单词首字母大写。但是,如果你在项目中给 POJO 类的字段以这种形式进行命...[2023/5/12]
如何实现Spring中服务关闭时对象销毁执行代码
spring提供了两种方式用于实现对象销毁时去执行操作
1.实现DisposableBean接口的destroy
2.在bean类的方法上增加@PreDestroy方法,那么这个方法会在DisposableBean.destory方法前触发
3.实现SmartLifecycle接口的stop...[2023/4/28]
【深入浅出Spring原理及实战】「源码调试分析」深入源码探索Spring底层框架的的refresh方法所出现的问题和异常
学习Spring源码的建议
阅读Spring官方文档,了解Spring框架的基本概念和使用方法。
下载Spring源码,可以从官网或者GitHub上获取。
阅读Spring源码的入口类,了解Spring框架的启动过程和核心组件的加载顺序。
阅读Spring源码中的注释和文档...[2023/4/24]
spring的事务传播机制
spring的事务传播机制
嫌弃内容代码复杂的可直接看思维导图大纲即可
基本概念
指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行
七种行为和测试
PROPAGATION_REQUIRED
默认,当前存在事务,则加入该事务;不存在事务,创建新事务。
public ...[2023/4/24]
Spring源码系列:核心概念解析Spring源码系列:核心概念解析
前言
本文旨在为读者解析Spring源码中的关键类,以便读者在深入阅读源码时,能够了解关键类的作用和用途。在阅读Spring源码时,经常会遇到一些不熟悉的概念,了解关键类的作用可以帮助读者更好地理解这些概念。
BeanDefinition
BeanDefinition是Spring框架中的一个...[2023/4/21]
Spring的Factories机制介绍Spring的Factories机制介绍
Java 的 SPI 机制
Java SpringBoot 加载 yml 配置文件中字典项
Spring的Factories就是Spring版本的Java Spi。 Spring Factories的最重要的功能就是:可以通过配置文件指定Spring容器加载一些特定的组件。
Spring ...[2023/4/21]
spring?bean标签中的init-method和destroy-method详解spring?bean标签中的init-method和destroy-method详解
目录1 背景介绍2 init-method3 destroy-method4 总结 1 背景介绍
在很多项目中,经常在xml配置文件中看到init-method 或者 destroy-method 。因此整理收集下,方便以后参考和学习。可以使用 init-method 和 destroy-met...[2023/4/17]
Spring @Profile注解使用和源码解析
介绍
在之前的文章中,写了一篇使用Spring @Profile实现开发环境,测试环境,生产环境的切换,之前的文章是使用SpringBoot项目搭建,实现了不同环境数据源的切换,在我们实际开发中,会分为dev,test,prod等环境,他们之间数独立的,今天进来详解介绍Spring @Profi...[2023/4/14]
Spring中Bean的实例化详细流程
还是举个例子,我有一个朋友小汪他远赴南方某城市打工。然后安定下来后他的朋友很想来家里玩,但是呢我这个朋友家里搞的很乱,所以他不好意思请朋友来家里玩。这时我的另一个朋友说那请一个保姆把家里好好整理一下就可以了,然后给他介绍了一个保姆大S(PS:本文无意指向任何人,因为Spring的前缀是S)然后就...[2023/4/12]
Spring入门系列:浅析知识点
前言
讲解Spring之前,我们首先梳理下Spring有哪些知识点可以进行入手源码分析,比如:
Spring IOC依赖注入
Spring AOP切面编程
Spring Bean的声明周期底层原理
Spring 初始化底层原理
Spring Transaction事务底层原理
Hello W...[2023/4/12]
非常小的一个东西,Spring依赖注入Bean类型的8种情况非常小的一个东西,Spring依赖注入Bean类型的8种情况
大家好,我是三友~~
今天来讲一个可能看似没有用但是实际又有点用的一个小东西,那就是@Autowired支持注入哪些Bean的类型。
为啥要讲这个呢?
故事说起来可能就比较长了。
不过长话可以短说,仅仅就是突然想起来之前有一个妹子问过我这个问题!
微信公众号:三友的java日记
...[2023/3/27]
三天吃透Spring Cloud面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~
Github地址:https: github...[2023/3/20]
浅析Spring?中?Bean?的理解与使用
目录一、定义二、控制反转(IoC)1、什么是依赖注入与控制反转呢?先通过一个例子来理解一下2、让 Spring 控制类构建过程3、这就是 IOC三、 @Bean 注解的使用1、使用说明2、Bean 名称2.1、默认情况下 Bean 名称就是方法名(首字母小写),比如下面 Bean 名称便是 myBe...[2023/3/20]
某大厂面试题:说一说Java、Spring、Dubbo三者SPI机制的原理和区别
大家好,我是三友~~
今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。
其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是简单地介绍了一下Java、Spring的SPI机制,并没有进行深入,所以本篇就来深入聊一聊这三者的...[2023/3/17]
Spring?refresh()源码解析
目录正文一、prepareRefresh:初始化前的预处理1.1初始化属性值1.2属性校验二、obtainFreshBeanFactory:刷新Bean工厂三、prepareBeanFactory:Bean工厂预处理3.1 ApplicationContextDProce or:Aware执行器3....[2023/3/15]
Spring?populateBean属性赋值和自动注入
目录正文一、postProce AfterInstantiation:修改Bean实例二、autowireByName:根据名称自动注入三、autowireByType:根据类型自动注入四、postProce PropertyValues:处理属性值(@Resource、@Autowired、@Va...[2023/3/15]
Spring MVC的请求处理逻辑
当大家了解了如何编写一个简单的Spring MVC程序后,大家心中应该会有一些好奇:这背后到底发生了什么?
Spring MVC是怎么把这些功能串联起来的?我们只是写了一个控制器而已,HTTP请求是怎么转换为控制器方法的调用的?结果又是怎么变成JSON的.....啊这小伙伴们是不是已经混乱了!...[2023/3/14]
Spring Cloud Alibaba实现服务的无损下线功能
目录1、背景2、解决方案2.1 找到通过负载均衡组件获取可用服务信息的地方2.2 解决思路3、部分实现代码3.1 引入jar3.2 编写服务下线方法3.3 监听配置变更,清除服务缓存3.3.1 使@NacosConfigListener注解生效3.3.2 监听配置、清除缓存4、实现4.1 服务准...[2023/3/14]
Spring:现代Java开发的必备框架Spring:现代Java开发的必备框架
目录Spring:现代Java开发的必备框架Spring创建bean的生命周期以及对应的接口和注解Spring使用三级缓存解决循环依赖的原理Spring使用三级缓存创建bean的过程Spring使用AOPSpringAOP的实现原理Spring使用事务管理Spring事务的原理DataSou...[2023/3/14]
SpringMVC基础源码分析(一)
实现Controller的三种方式分析
每种实现的方式对应的HanderAdapter都不同。
实现Controller接口
该接口对应的HanderAdapter为SimpleControllerHandlerAdapter。
使用案列:
public cla LeContr...[2023/3/3]
SpringCloud OpenFeign基本介绍与实现示例SpringCloud OpenFeign基本介绍与实现示例
目录介绍常用注解代码实现注意事项 介绍
在上面一篇介绍Nacos的文章最后,两个服务的相互调用是用的RestTemplate类完成的。但这种方式不是很推荐,更佳的方式是用OpenFeign组件去调用。OpenFeign是官方推出的服务调用和负载均衡组件,基于Ribbon和...[2023/2/22]
Springdoc替换swagger的实现步骤分解
目录前言一、springdoc介绍二、使用步骤1.引入库2.spring配置类3.常用的swagger注解和springdoc的对应关系4.一个接口类的示例5.配置文件配置6.WebMvc配置7.UI 前言
距离swagger上次发布版本已经过去两年多了,一直没有更新,与当前的springboo...[2023/2/17]
【Spring】Bean注册注解
@Configuration
同@Component,将标注的类作为一个组件,区别是会使用Cglib动态代理,因此使用该注解的类不能是final的
与@Component的区别可见:Configuration和@Component的区别
Cglib动态代理和JDK动态代理区别可见...[2023/2/10]
SpringBean和Controller实现动态注册与注销过程详细讲解
目录说明注册和注销工具类编写测试用例测试结果注册Service注册controller注销Controller 部分场景下可能需要下载远程jar包,然后注册jar包中的Bean和Controller
说明
这里的Bean 一般特指 Service层的服务类,Controller本质上也是Be...[2023/2/10]
Spring事务管理中的异常回滚是什么
目录前言问题场景Spring 管理事务的原理MySQL中的事务管理JDBC中的事务管理Spring中的事务管理Spring中的事务接口到底回滚还是不回滚简明答案什么是执行事务的方法什么情况下异常被感知什么情况下异常不被感知异常被感知后Spring做些什么回滚程度是多少 记录总结Spring核心知识点...[2023/2/10]
Spring AOP与AspectJ的对比及应用Spring AOP与AspectJ的对比及应用
1 简介
AOP,即面向切面编程是很常用的技术,特别是在Java Web开发中。而最流行的AOP框架分别是Spring AOP和AspectJ。
2 Spring AOP vs AspectJ
Spring AOP是基于Spring IoC实现的,它解决大部分常见的需求,但它并不是一个完整的A...[2023/2/8]
浅谈springBean的作用域
目录bean的作用域具体实现代码分析 前言:最近在进行springBean的作用域学习,并且学习了对应的例子。这里进行一下总结 一:Bean的作用域基础概念
如果想学习SpringBean的生命周期,那么就必须要学习Bean的作用域。因为不同的作用域的bean的生命周期不同
1:single...[2023/2/8]