环境:springboot 2.1.4

数据源引入方式

  • 数据源一
  1. @Configuration
  2. @EnableTransactionManagement
  3. @EnableJpaRepositories(
  4. entityManagerFactoryRef = "entityManagerFactoryPrimary",
  5. transactionManagerRef = "transactionManagerPrimary",
  6. basePackages = {"com.xxj.primary.repository"}
  7. )
  8. public class SourceDataConfig {
  9.  
  10. @Autowired
  11. private HibernateProperties hibernateProperties;
  12.  
  13. @Autowired
  14. private JpaProperties jpaProperties;
  15.  
  16. private Map<String, Object> getVendorProperties() {
  17. return hibernateProperties.determineHibernateProperties(
  18. jpaProperties.getProperties(), new HibernateSettings()
  19. );
  20. }
  21.  
  22. @Bean(name = "primaryDataSource")
  23. @ConfigurationProperties(prefix = "spring.datasource.primary") # 配置数据源获取的涞源
  24. public DataSource primaryDataSource(){
  25. return DataSourceBuilder.create().build();
  26. }
  27.  
  28. @Bean(name = "entityManagerFactoryPrimary")
  29. public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder, @Qualifier("primaryDataSource") DataSource dataSource) {
  30. return builder.dataSource(dataSource)
  31. .properties(getVendorProperties())
  32. .packages("com.xxj.primary.model")
  33. .persistenceUnit("primaryPersistenceUnit")
  34. .build();
  35. }
  36.  
  37. @Bean(name = "transactionManagerPrimary")
  38. public PlatformTransactionManager propertyTransactionManager(
  39. @Qualifier("entityManagerFactoryPrimary") EntityManagerFactory propertyEntityManagerFactory) {
  40. return new JpaTransactionManager(propertyEntityManagerFactory);
  41. }
  42. }
  • 数据源二
  1. @Configuration
  2. @EnableTransactionManagement
  3. @EnableJpaRepositories(
  4. entityManagerFactoryRef = "entityManagerFactorySecond",
  5. transactionManagerRef = "transactionManagerSecond",
  6. basePackages = {"com.xxj.second.repository"}
  7. )
  8. public class SecondDataConfig {
  9.  
  10. @Autowired
  11. private HibernateProperties hibernateProperties;
  12.  
  13. @Autowired
  14. private JpaProperties jpaProperties;
  15.  
  16. private Map<String, Object> getVendorProperties() {
  17. Map<String, Object> map = hibernateProperties.determineHibernateProperties(
  18. jpaProperties.getProperties(), new HibernateSettings());return map;
  19. }
  20.  
  21. @Primary
  22. @Bean(name = "secondDataSource")
  23. @ConfigurationProperties(prefix = "spring.datasource.second")
  24. public DataSource targetDataSource(){
  25. return DataSourceBuilder.create().build();
  26. }
  27.  
  28. @Primary
  29. @Bean(name = "entityManagerFactorySecond")
  30. public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder, @Qualifier("secondDataSource") DataSource dataSource) {
  31. return builder.dataSource(dataSource)
  32. .properties(getVendorProperties())
  33. .packages("com.xxj.second.model")
  34. .persistenceUnit("targetPersistenceUnit")
  35. .build();
  36. }
  37.  
  38. @Primary
  39. @Bean(name = "transactionManagerSecond")
  40. public PlatformTransactionManager propertyTransactionManager(
  41. @Qualifier("entityManagerFactorySecond") EntityManagerFactory propertyEntityManagerFactory) {
  42. return new JpaTransactionManager(propertyEntityManagerFactory);
  43. }
  44. }

数据源配置

  1. spring.datasource.primary.jdbc-url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&requireSSL=false
  2. spring.datasource.primary.username = root
  3. spring.datasource.primary.password = 1234567
  4. spring.datasource.primary.driver-class-name = com.mysql.jdbc.Driver
  5.  
  6. spring.datasource.second.jdbc-url = jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&rewriteBatchedStatements=true
  7. spring.datasource.second.username = root
  8. spring.datasource.second.password = 1234567
  9. spring.datasource.second.driver-class-name = com.mysql.jdbc.Driver

springboot 2.x版本jpa多数据源引入跟1.x版本有些不太一样,还需要额外注意。

  1. 获取jpa配置的方式
  2. 数据源配置为jdbc-url

要注意:packages不能引用相同的model,否则会导致数据库卡死。

springboot2.x jpa接入多数据源的更多相关文章

  1. springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用

    springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...

  2. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

    上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...

  3. Springboot2 jpa druid多数据源

    package com.ruoyi; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans ...

  4. (四)SpringBoot2.0基础篇- 多数据源,JdbcTemplate和JpaRepository

    在日常开发中,经常会遇到多个数据源的问题,而SpringBoot也有相关API:Configure Two DataSources:https://docs.spring.io/spring-boot ...

  5. 6_1.springboot2.x整合JDBC与数据源配置原理解析

    1.引言 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,x ...

  6. grafana接入zabbix数据源

    一.grafana介绍 grafana是开源免费的应用数据可视化仪表盘,由于zabbix本身对监控数据可视化并不侧重,所以大多使用第三方数据可视化工具来做大屏.下面向小伙伴们介绍grafana接入za ...

  7. springboot2.0动态多数据源切换

    摘要:springboot1.x到springboot2.0配置变化有一点变化,网上关于springboot2.0配置多数据源的资料也比较少,为了让大家配置多数据源从springboot1.x升级到s ...

  8. spring boot 整合JPA多数据源

    上个文章介绍了spring boot在使用Mybatis持久化技术的时候如何使用多数据源,今天再补充一个使用spring data jpa实现多数据源的使用情况,JPA是一套数据库持久化规范,或者称之 ...

  9. springboot2多数据源完整示例

    springboot2 + mybatis + mysql + oracle + sqlserver多数据源的配置 相信很多朋友在开发的时候,可能会碰到需要一个项目,配置多个数据源的需求,可能是同一种 ...

随机推荐

  1. D3.js绘制 颜色:RGB、HSL和插值 (V3版本)

    颜色和插值   计算机中的颜色,常用的标准有RGB和HSL.   RGB:色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加来得到额各式各样的颜色.三个通道的值得范围都 ...

  2. D3.js(v3)+react 制作 一个带坐标与比例尺的散点图 (V3版本)

    上一章做了柱形图,https://www.cnblogs.com/littleSpill/p/10835041.html   这一章做散点图.   散点图(Scatter Chart),通常是一横一竖 ...

  3. day04 mysql单表查询 多表查询 pymysql的使用

    day04 mysql pymysql   一.单表查询     1.having过滤         一般用作二次筛选             也可以用作一次筛选(残缺的: 只能筛选select里面 ...

  4. vue之自定义指令

    1.自定义指令的作用 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍 ...

  5. Java用集合实现斗地主发牌

    本文以java双列集合HashMap为核心实现发牌操作:                                思路: 1.准备牌:创建一个Map集合,存储牌的索引和组装好的牌 创建一个lis ...

  6. bzoj1061题解

    [解题思路] 设类型i的志愿者,即第Si天~第Ti天工作的志愿者,共招募xi个,于是有不等式组Σxj≥Ai(Sj≤i≤Tj). 这样,题目就变成了求一组满足一次不等式组的xi,使ΣCixi最小,即标准 ...

  7. 20180713NOIP模拟赛

    20180713NOIP模拟赛 T1:动物园 zoo.cpp 2s [题目描述] 给定一张图,点有点权,求每个点到其他所有点中所有点的权值最小值之和. [思路] \(50pts\)做法:对于每个点跑一 ...

  8. 牛客多校第九场 D Knapsack Cryptosystem 背包

    题意: 给你32个物品,给定一个容积,让你恰好把这个背包装满,求出装满的方案 题解: 暴力计算的话,复杂度$2^{32}$肯定会炸,考虑一种类似bsgs的算法,先用$2^{16}$的时间遍历前一半物品 ...

  9. JVM内核-原理、诊断与优化学习笔记(三):常用JVM配置参数

    文章目录 Trace跟踪参数 -verbose:gc (打开gc的跟踪情况) -XX:+printGC(打开gc的log开关,如果在运行的过程中出现了gc,就会打印出相关的信息.) -XX:+Prin ...

  10. webpack3

    6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...