Springboot提供AbsTractRoutingDatasource抽象类别。该分类意味着数据源路由,因此用户可以选择切换当前数据源。该类提供一个抽象方法destriinecurrentlookupkey()。Springboot切换数据源时会调用此方法,因此您只需要实现它。在此方法中,返回需要在此方法中切换的数据源名称
1.从分类图中,我们可以看到AbsTractRoutingAsource由数据源接口实现(非
2. Abstractrutindasource实现了这两种方法
其中,decitiNetArgetDataSource()调用desirenecurrentlookupkey()方法,获取当前设置密钥,尝试在this.resolvedatasources属性的上下文中获取数据源对象。
3.那么,resolvedDatasources在哪里维护?ApptRactRoutingAtasource类实现了初始化类别的AfterPropertiesset()方法。在BEAN的所有属性设置之后,您可以调用此方法。您可以从this.targetDatasources中查看此信息。
因此,只需更改此.targetDataSources,然后触发AfterPropertiesset()更改此resolvedDataSources;遵循-up更改decitionecurrentlookup(key)的返回值,并且通过naterConnection()需要数据规范()。
在多年业务方案中,每个租户通常都独立于数据库(是否根据实际需求处理独立的数据源实例)。每个租户的数据是在数据库级别隔离的。租户的数据将被混淆。但是接下来是灵活的数据源的需求。它需要包装。当业务写作时,您可以根据提供的租户代码轻松切换到相应的数据源。
1.可以切换注释方法以提供注释,该注释可以根据租户代码进行切换,也可以根据配置文件中编写的数据源名称切换
2.直接呼叫方法开关提供了租户RDS交换类。编写业务代码时调用呼叫方法。此方法可以允许租户代码以变量的形式传递。
1.添加POM依赖关系并配置数据源信息2.编写数据源配置类,将数据源配置信息注入容器3.编写DynamicDataSource类,以继承AbsTractROCTROUTINGINGATASORCE的抽象类,维护当前数据源信息,提供当前的数据源信息,提供切换方法4.编写租户RDSSwitching类,在业务开关数据源时均匀地调用此类别5.观看自定义注释6.编写切割类型,将连接点直接设置在写作的自定义注释上,请调用RDS Switching Data根据参数和其他调用来源。7.卑鄙的类别和异常枚举类别,指定异常投掷
1. POM取决于添加和配置的数据源信息pom.xml
Application.yml
1.配置包含一些DRUID配置。您可以根据业务需求自己配置。它也是配置库数据源。get,spring.datasource.druid.db1是增加的数据源。DB1可以被命名为特定商业库的名称。了解命名DB1很方便
2.编写数据源配置类,将数据源配置信息注入容器数据源配置类datasourceconfig
数据源常数数量类
这是将两个配置的数据源连接信息与DynamicDataSource.DataSourCemap进行的,并将其设置在动态数据源对象中。该值最终将在AfterPropertiesset中的分辨率DataSources中设置
3.编写DynamicDataSource类继承的AbsTractRoutingAsource抽象,维护当前的数据源信息,提供动态数据源DynamiCdatasource Switching方法动态数据源类class类DynamicicDataSource
4.编写租户RDS切换类,并在业务开关数据源时均匀地调用此类型的RDSConfig类,Javabean描述了RDS的连接信息
特定的RDS交换服务类:Tentrdsservimpl类以实现Tenantrdsservice接口。
1.这里使用两个表,一个是一个租户表(租户)来存储房客代码和RDS之间的对应关系,另一个是DB连接信息(RDS)表,用于存储数据源连接信息。特定的特定内容是特定的。映射器和Javabean的代码不会在此处发布。根据需求2的实现。提供了三种方法,以根据租户代码获得RDS连接信息,根据租户代码切换RDS,然后根据数据源名称切换RDS。当前的连接信息在开关方法中被判断,它不会重复开关,并且不会重复配置库以获取RDS信息
5.编写自定义注释注释自定义注释@switchmasterrds
自定义注释@switchrds
1. SwitchRDS注释可以使用租户代码切换RDS,您还可以使用数据源名称进行切换2.SwitchMasterRDS注释来促进开关到主数据源并添加
6.编写switchmasterRDS switchmasterrdspect的切割表面
switchrdsaspect
这里的连接点直接设置在写作的自定义注释上,RDS开关类开关数据源是根据参数和其他
7.异常类别,异常枚举错误界面,标准化异常枚举类别
枚举类别的处理类别,列举所有错误类型和错误代码
处理异常基类,所有处理异常都继承了此类,保存errorInfo信息,可以促进错误代码等。
特定的异常类别直接继承了异常碱基的治疗。主动抛出文本的异常是以这种方式编写的。
1.注释方法
2.如何使用业务代码
作者:Bopip Shuang