之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于之前的JdbcTemplate和Spring-data-jpa例子分别介绍两种多数据源的配置方式。

多数据源配置

创建一个Spring配置类,定义两个DataSource用来读取application.properties中的不同配置。如下例子中,主数据源配置为spring.datasource.primary开头的配置,第二数据源配置为spring.datasource.secondary开头的配置。

@Configuration public class DataSourceConfig {

@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {return DataSourceBuilder.create().build();
}@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@Primary
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {return DataSourceBuilder.create().build();
}
复制代码

} 对应的application.properties配置如下:

spring.datasource.primary.url=jdbc:mysql://localhost:3306/test1 spring.datasource.primary.username=root spring.datasource.primary.password=root spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.secondary.url=jdbc:mysql://localhost:3306/test2 spring.datasource.secondary.username=root spring.datasource.secondary.password=root spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver JdbcTemplate支持

对JdbcTemplate的支持比较简单,只需要为其注入对应的datasource即可,如下例子,在创建JdbcTemplate的时候分别注入名为primaryDataSource和secondaryDataSource的数据源来区分不同的JdbcTemplate。

@Bean(name = "primaryJdbcTemplate") public JdbcTemplate primaryJdbcTemplate( @Qualifier("primaryDataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); }

@Bean(name = "secondaryJdbcTemplate") public JdbcTemplate secondaryJdbcTemplate( @Qualifier("secondaryDataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } 接下来通过测试用例来演示如何使用这两个针对不同数据源的JdbcTemplate。

@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(Application.class) public class ApplicationTests {

@Autowired
@Qualifier("primaryJdbcTemplate")
protected JdbcTemplate jdbcTemplate1;@Autowired
@Qualifier("secondaryJdbcTemplate")
protected JdbcTemplate jdbcTemplate2;@Before
public void setUp() {jdbcTemplate1.update("DELETE  FROM  USER ");jdbcTemplate2.update("DELETE  FROM  USER ");
}@Test
public void test() throws Exception {// 往第一个数据源中插入两条数据jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 1, "aaa", 20);jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 2, "bbb", 30);// 往第二个数据源中插入一条数据,若插入的是第一个数据源,则会主键冲突报错jdbcTemplate2.update("insert into user(id,name,age) values(?, ?, ?)", 1, "aaa", 20);// 查一下第一个数据源中是否有两条数据,验证插入是否成功Assert.assertEquals("2", jdbcTemplate1.queryForObject("select count(1) from user", String.class));// 查一下第一个数据源中是否有两条数据,验证插入是否成功Assert.assertEquals("1", jdbcTemplate2.queryForObject("select count(1) from user", String.class));}
复制代码

}

源码来源:http://minglisoft.cn/honghu/technology.html

转载于:https://juejin.im/post/5a8fb8b26fb9a063435eee88

企业分布式微服务云SpringCloud SpringBoot mybatis (九)Spring Boot多数据源配置与使用(JdbcTemplate支持)...相关推荐

  1. 企业分布式微服务云SpringCloud SpringBoot mybatis - 服务消费者(Feign)

    一.Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注 ...

  2. 企业分布式微服务云SpringCloud SpringBoot mybatis (九)服务链路追踪(Spring Cloud Sleuth)...

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Add sleuth to the classpath of a Spring Bo ...

  3. 企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)...

    讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一. ...

  4. 企业分布式微服务云SpringCloud SpringBoot mybatis (十一)docker部署spring cloud项目

    一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...

  5. 企业分布式微服务云SpringCloud SpringBoot mybatis (五)路由网关(zuul)

    在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...

  6. 企业分布式微服务云SpringCloud SpringBoot mybatis (二)服务消费者(rest+ribbon)

    一.ribbon简介 Ribbon is a client side load balancer which gives you a lot of control over the behaviour ...

  7. 企业分布式微服务云SpringCloud SpringBoot mybatis (二)Spring Boot属性配置文件详解...

    相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...

  8. 企业分布式微服务云SpringCloud SpringBoot mybatis (十二)断路器监控(Hystrix Dashboard)...

    在我的第四篇文章断路器讲述了如何使用断路器,并简单的介绍了下Hystrix Dashboard组件,这篇文章更加详细的介绍Hystrix Dashboard. 一.Hystrix Dashboard简 ...

  9. 企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...

    Spring-data-jpa支持 对于数据源的配置可以沿用上例中DataSourceConfig的实现. 新增对第一数据源的JPA配置,注意两处注释的地方,用于指定数据源对应的Entity实体和Re ...

最新文章

  1. vim g s 对比
  2. oracle 显示格式化
  3. 网传一些著名互联网公司的实习工资,某节真的香啊
  4. 图形模式下“文章伪原创工具”出汉字来
  5. 给一个执行在windows 7和NAT下的VMWARE虚拟机分配固定IP
  6. 《Orange'S:一个操作系统的实现》与上一版之比较
  7. LT8619B 产品功能概述 HDMI1080P转BT1120
  8. 中国象棋matlab
  9. 由浅入深讲二叉树4种遍历算法的由来
  10. 中国移动湖南公司2022校园春季招聘正在进行中
  11. 19 广域网 WAN
  12. Ubuntu18.04 qt5.14安装
  13. react项目中解决IE浏览器下报Promise未定义的错误
  14. c语言中关键字的含义,c语言中的关键字有哪些?有什么含义?
  15. 面试阿里!妹子终面,阿里面试官问:有没有男朋友? 结果...
  16. 网站攻击软件_公安某局DDoS攻击软件检验案例
  17. LED升压恒流_降压恒流_升压恒压_降压降压芯片大全可供工程师选型用!
  18. HTTP 304状态码的详细讲解
  19. k8s使用harbor创建POD
  20. 机器学习贝叶斯-垃圾邮件识别

热门文章

  1. 微信JSApi支付~微信支付代理模式的实现(原创)
  2. glup Browsersync
  3. Memcache的部署和使用
  4. ng-options渲染的第一项为空的解决办法
  5. SystemCenter2012SP1实践(24)【录像】创建私有云
  6. 【原创】MySQL 5.5 PROXY USER 伪装用户
  7. 分享Silverlight/WPF/Windows Phone一周学习导读(3月1日-3月5日)
  8. SQL Server 2005/2008 图形界面(SQL Server Management Studio Express)
  9. 三星6.0系统手机最简单激活XPOSED框架的教程
  10. 18 常用模块 random shutil shevle logging sys.stdin/out/err