文章目录

  1. 1. 环境依赖
  2. 2. 数据源
  3. 3. 单元测试
  4. 4. 源代码

在某些场景下,我们可能会在一个应用中需要依赖和访问多个数据源,例如针对于 MySQL 的分库场景。因此,我们需要配置多个数据源。

环境依赖

修改 POM 文件,添加spring-boot-starter-jdbc依赖。

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-jdbc</artifactId>
  4. </dependency>

添加mysql依赖。

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <version>5.1.35</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba</groupId>
  8. <artifactId>druid</artifactId>
  9. <version>1.0.14</version>
  10. </dependency>

数据源

在 src/main/resources/application.properties 中配置数据源信息。

  1. # mysql
  2. spring.datasource.one.driver-class-name=com.mysql.jdbc.Driver
  3. spring.datasource.one.url=jdbc:mysql://localhost:3307/springboot_db1
  4. spring.datasource.one.username=root
  5. spring.datasource.one.password=root
  6. spring.datasource.two.driver-class-name=com.mysql.jdbc.Driver
  7. spring.datasource.two.url=jdbc:mysql://localhost:3307/springboot_db2
  8. spring.datasource.two.username=root
  9. spring.datasource.two.password=root

通过 Java Config 创建 dataSource 和 jdbcTemplate。

我们设定主数据源为 spring.datasource.one 开头的配置,并添加 @Primary ,这样我们还可以享受 Spring Boot 提供的自动配置 DataSource 的机能。此外,第二数据源配置为 spring.datasource.two 开头的配置。

  1. @Configuration
  2. @EnableTransactionManagement
  3. public class BeanConfig {
  4. @Bean(name = "oneDataSource")
  5. @Qualifier("oneDataSource")
  6. @Primary
  7. @ConfigurationProperties(prefix="spring.datasource.one")
  8. public DataSource oneDataSource() {
  9. return DataSourceBuilder.create().build();
  10. }
  11. @Bean(name = "twoDataSource")
  12. @Qualifier("twoDataSource")
  13. @ConfigurationProperties(prefix="spring.datasource.two")
  14. public DataSource twoDataSource() {
  15. return DataSourceBuilder.create().build();
  16. }
  17. @Bean(name = "oneJdbcTemplate")
  18. public JdbcTemplate oneJdbcTemplate(@Qualifier("oneDataSource") DataSource dataSource) {
  19. return new JdbcTemplate(dataSource);
  20. }
  21. @Bean(name = "twoJdbcTemplate")
  22. public JdbcTemplate twoJdbcTemplate(@Qualifier("twoDataSource") DataSource dataSource) {
  23. return new JdbcTemplate(dataSource);
  24. }
  25. }

单元测试

为了验证我们的配置是否正常,我们通过编写单元测试用例来验证吧。

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @SpringApplicationConfiguration(WebMain.class)
  3. public class JdbcTest {
  4. @Resource(name="oneJdbcTemplate")
  5. protected JdbcTemplate jdbcTemplate1;
  6. @Resource(name="twoJdbcTemplate")
  7. protected JdbcTemplate jdbcTemplate2;
  8. @Test
  9. public void test() throws Exception {
  10. jdbcTemplate1.update("insert into t_author(id, real_name, nick_name) values(?, ?, ?)", 2, "梁桂钊", "LiangGzone");
  11. jdbcTemplate2.update("insert into t_author(id, real_name, nick_name) values(?, ?, ?)", 2, "梁桂钊", "LiangGzone");
  12. }
  13. }

源代码

相关示例完整代码: springboot-action

(完)

如果觉得我的文章对你有帮助,请随意打赏。

最新文章

  1. 关于java多线程
  2. java历史集合类对比
  3. Java学习笔记之继承
  4. innodb b+树
  5. Java高阶面试问题合集
  6. 把自己的电脑做服务器发布tomcat的项目外网访问
  7. 设计模式(8)--Decorator--装饰器模式--结构型
  8. 201521123052 《Java程序设计》 第12周学习总结
  9. CentOS7防火墙firewalld设置
  10. Unity Ulua1.03优化记录
  11. java数组元素倒置
  12. VS比较好用的扩展插件总结
  13. 如何统计TFS代码库中的团队项目所占用的磁盘空间
  14. Python 数据分析—第九章 数据聚合与分组运算
  15. char * 与char []探究理解
  16. 利用git工具命令简单的从github上拷贝和上传代码
  17. [BZOJ2555]SubString LCT+后缀自动机
  18. 第19章 通讯的基本概念—零死角玩转STM32-F429系列
  19. Codeforces Gym 101775D Mr. Panda and Geometric Sequence(2017-2018 ACM-ICPC Asia East Continent League Final,D题,枚举剪枝)
  20. 【转载】Hyperledger学习小结

热门文章

  1. 函数使用三:采购过账BAPI_GOODSMVT_CREATE
  2. 2017-4-13/MySQL
  3. AWS EC2 MySQL迁移到RDS案例
  4. [contest 781] 9.6
  5. Python爬虫原理
  6. Kali安装教程(VMWare)
  7. sqlmap sql注入工具
  8. android apk瘦身
  9. mac nginx+php-fpm配置(安装过后nginx后访问php文件下载,访问php文件请求200显示空白页面)
  10. 逆袭之旅DAY09.东软实训.接口