springboot集成@DS注解实现数据源切换的方法示例

 更新时间:2022年03月09日 14:33:27   作者:后台小白鼠  
本文主要介绍了springboot集成@DS注解实现数据源切换的方法示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

启用@DS实现数据源切换

POM内添加核心jar包

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

yml配置

spring:
  datasource:
    #配置hikari连接池
    hikari:
      minimum-idle: 4
      maximum-pool-size: 16
      connection-timeout: 10000
      idle-timeout: 30000
      connection-init-sql: set names utf8mb4
    #动态数据源配置
    dynamic:
      #主数据源,默认启用
      primary: business
      datasource:
        #数据源1
        business:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_business?useUnicode=true&characterEncoding=utf-8
          username: ****
          password: ****
        #数据源2
        user:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8
          username: ****
          password: ****
        #数据源3
        order:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_order?useUnicode=true&characterEncoding=utf-8
          username: ****
          password: ****

“核心”-使用@DS注解

使用@DS注解的核心是什么呢?

1.注解添加在dao.mapper上无效
2.注解添加到interface Service类上无效
3.注解添加到interface Service方法上无效

那么,此注解应该如何使用呢?

添加@DS注解到实现类或者实现类的方法上才可以

当注解添加到类上,意味着此类里的方法都使用此数据源;
当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置

@Service
@DS("slave")
public class UserServiceImpl implements UserService {
 
  @Autowired
  private JdbcTemplate jdbcTemplate;
 
  public List<Map<String, Object>> selectAll() {
    return  jdbcTemplate.queryForList("select * from user");
  }
  @Override
  @DS("slave_1")
  public List<Map<String, Object>> selectByCondition() {
    return  jdbcTemplate.queryForList("select * from user where age >10");
  }

最后

好了,就说这么多了,数据源切换的方式、策略有多种,比如按包区分不同数据源的方式、手动配置的数据源的方式,以及@DS注解的方式,该方式的最大特点,相对比较灵活,配置简洁易懂,后期维护及迭代比较乐观。

到此这篇关于springboot集成@DS注解实现数据源切换的方法示例的文章就介绍到这了,更多相关springboot @DS注解数据源切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于SpringBoot整合SSMP的详细教程

    基于SpringBoot整合SSMP的详细教程

    这篇文章主要介绍了SpringBoot整合SSMP的详细教程,通过本文学习基于SpringBoot实现SSMP整合的详细代码,需要的朋友可以参考下
    2022-08-08
  • spring mvc路径匹配原则详解

    spring mvc路径匹配原则详解

    这篇文章主要介绍了spring mvc路径匹配原则详解,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以参考下,下面就和小编一起来看看吧
    2018-02-02
  • java return用法实例详解

    java return用法实例详解

    在本篇文章里小编给大家整理的是关于java return用法以及相关知识点总结,需要的朋友们参考下。
    2019-08-08
  • JPA配置详解之jpaProperties用法

    JPA配置详解之jpaProperties用法

    这篇文章主要介绍了JPA配置详解之jpaProperties用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Struts2学习教程之入门小白的开始基础

    Struts2学习教程之入门小白的开始基础

    struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。下面这篇文章主要给各位想要学习Struts2的小白们详细介绍了关于Struts2入门的一些开始基础,需要的朋友可以参考下
    2018-04-04
  • Java数据结构与算法之二分查找详解

    Java数据结构与算法之二分查找详解

    这篇文章主要介绍了Java数据结构与算法之二分查找详解,二分查找算法是一种在有序数组中查找某一特定元素的搜索算法,其思想就是不断地将有序查找表“一分为二”,逐渐缩小搜索区域,进而找到目标元素,需要的朋友可以参考下
    2023-12-12
  • JVM加载class文件的原理机制实例详解

    JVM加载class文件的原理机制实例详解

    Java是一种具有动态性的解释型语言,类(class)只有被加载到JVM后才能运行,接下来通过本文给大家介绍JVM加载class文件的原理机制详解,感兴趣的朋友一起看看吧
    2022-04-04
  • Mybatis批量插入index out of range错误的解决(较偏的错误)

    Mybatis批量插入index out of range错误的解决(较偏的错误)

    这篇文章主要介绍了Mybatis批量插入index out of range错误的解决(较偏的错误),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot集成分页插件PageHelper的配置和使用过程

    SpringBoot集成分页插件PageHelper的配置和使用过程

    这篇文章主要介绍了SpringBoot集成分页插件PageHelper的配置和使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Spring中事件发布机制及流程详解

    Spring中事件发布机制及流程详解

    这篇文章主要介绍了Spring中事件发布机制及流程详解,在分析源码的过程中,也是大量使用了事件机制,在我分析的这篇博客中,有不少地方都运用了事件发布机制,所以本文的目的是从SpringBoot中学习到事件的发布流程,需要的朋友可以参考下
    2023-11-11

最新评论