003-多数据源

1. 若依多数据源分析

1.1 介绍

若依使用Spring提供的AbstractRoutingDataSource实现每次请求,动态获取指定的数据源

使用DataSourceType枚举定义多个数据源标识

使用DynamicDataSourceContextHolder中的ThreadLocal变量存储当前线程的使用数据源标识

使用DruidConfig配置多数据源的Bean注入和AbstractRoutingDataSourceBean的注入。在其中,使用DruidProperties获取多数据源的通用配置

使用DataSource注解+切面DataSourceAspect实现根据service方法上的注解,实现放入数据源标记。在执行方法的时候,经由AbstractRoutingDataSource根据当前线程的标记,来动态使用某个数据源

1.2 多数据源接口流程图

在这里插入图片描述

1.3 自定义实现步骤

  1. 配置yml配置文件,配置多数据源。
  2. 定义配置类,使用@ConfigurationProperties或者是@Value注入配置属性
  3. 定义一个多数据源管理类,加载多个数据源,放入一个Map中,key为数据源标识,可以使用枚举定义,value为Datasource对象
  4. 定义一个DynamicDataSourceContextHolder,定义ThreadLocal对象放入当前线程使用的数据源标识
  5. 定义AbstractRoutingDataSource实现类,设置所有的数据源和默认的数据源。重写determineCurrentLookupKey方法,返回DynamicDataSourceContextHolder中ThreadLocal的数据源标识
  6. 定义DataSource注解,可以标识类或者方法,作用于Service。可以指定当前方法使用哪个数据源
  7. 定义切面DataSourceAspect,根据DataSource注解中的标识,放入DynamicDataSourceContextHolder中共的ThreadLocal对象中

这样就可以实现加入注解后,可以根据动态根据注解切换数据源

1.4 用途

这种方式一般使用在业务分库的情况下。如果主从,需要加很多额外的代码保证功能。

读写分离建议使用Mybatis的Sql拦截,分析是否SELECT语句,来分配主库和从库。

或者直接使用现成的工具或者中间件搞定。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
N76E003是一颗具有多路AD功能的微控制器芯片。它内置了一个12位AD转换器模块,可以用于实现多路模拟信号的采集与处理。 在N76E003的开发过程中,我们可以使用多种方法来实现多路AD的例程。以下是一种可能的实现方式: 首先,我们需要在程序中配置AD转换器模块的参数。这包括选择参考电压源、设置采样时钟频率以及配置输入通道和模式等。可以使用相关的寄存器和位字段来完成这些配置。以下是一个示例代码片段: ``` ADMOD = 0x08; // 选择VDD作为参考电压 ADCLK = 0x01; // 设置采样时钟频率为最低 ADINS = 0x0F; // 配置AD输入通道(此处假设有4个AD通道) ``` 接下来,我们可以编写一个循环,循环中进行AD转换和数据处理的操作。每次循环时,我们可以选择一个特定的AD通道进行转换并等待转换完成。转换完成后,我们可以读取转换结果并进行相应的数据处理。以下是一个示例代码片段: ``` while(1) { ADCF = 0x01; // 启动AD转换 while(ADCF != 0); // 等待AD转换完成 result = ADCDH; // 读取转换结果(12位) // 在这里可以对转换结果进行进一步处理 } ``` 需要注意的是,N76E003的AD转换器模块只有一个转换结果寄存器,因此在进行多路AD转换时,我们需要逐个通道进行转换并读取结果。 以上是关于N76E003多路AD例程的一个简单实现。实际的应用中,我们可能需要结合其他部分的代码来完成更为复杂的功能,比如中断处理、采样率控制和数据存储等。希望这些信息能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值