一种配置多数据源的实现方式

利用spring AutoDatabaseConfiguration可以自动配置数据源。但是如果项目需要同时使用多个数据源,spring原生的配置方式无法满足。spring提供了AbstractRoutingDataSource,可以自定义数据源解决类似的自定义需求。

最佳的配置方式,应该和spring情况类似,不侵入原有业务。下面提供一种结合localThread、@annotation、Aspect的方案。

  1. 创建一个 ComposeDataSource bean, 实现spring 的AbstractRoutingDataSource,并exclude spring AutoDatabaseConfiguration。
  2. 在ComposeDataSource初始化方法里,初始化的多数据源,并设置到DataSourceMap中,其中key为数据源id,value为数据源实例。
  3. 执行数据库操作的方法上使用自定义注解,指定数据源id。
  4. 使用aspect,具体实现方法使用aspectj或者sping aspect,参考@Async文章,通过id查询数据源,并配置到localThread。
  5. 执行数据库操作的方法时,调用ComposeDataSource的getConnect方法,从localThread获得实际数据源。

你可能感兴趣的:(一种配置多数据源的实现方式)