springboot项目配置多数据源

springboot从2.0开始默认数据库连接池 Hikari,在配置多数据源时想自定义连接池配置可以参考如下…

pom.xml

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version>
</parent>
<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

application.yml

spring:datasource:primary:driver-class-name: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://127.0.0.1:3306/first?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123123connectionTimeout: 60000maximumPoolSize: 5maxLifetime: 0idleTimeout: 0poolName: hikari-01secondary:driver-class-name: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://127.0.0.1:3306/second?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123123connectionTimeout: 60000maximumPoolSize: 5maxLifetime: 0idleTimeout: 0poolName: hikari-02jpa:show-sql: truehibernate:ddl-auto: nonedatabase-platform: org.hibernate.dialect.MySQL8Dialectopen-in-view: true

第一数据源配置

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"com.wanfeng.multidatasource.repository.primary"},entityManagerFactoryRef = "entityManagerFactoryPrimary",transactionManagerRef = "transactionManagerPrimary")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public class PrimaryConfig extends HikariConfig {private final JpaProperties jpaProperties;private final HibernateProperties hibernateProperties;public PrimaryConfig(JpaProperties jpaProperties, HibernateProperties hibernateProperties) {this.jpaProperties = jpaProperties;this.hibernateProperties = hibernateProperties;}@Bean(name = "primaryDataSource")@Primarypublic DataSource primaryDataSource() {return new HikariDataSource(this);}@Bean(name = "entityManagerPrimary")public EntityManager entityManager(EntityManagerFactoryBuilder builder) {return Objects.requireNonNull(entityManagerFactoryPrimary(builder).getObject()).createEntityManager();}@Bean@Primarypublic LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) {return builder.dataSource(primaryDataSource()).properties(hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(),new HibernateSettings()))//设置实体类所在位置.packages("com.wanfeng.multidatasource.entity.primary").persistenceUnit("primaryPersistenceUnit").build();}@Bean(name = "transactionManagerPrimary")PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactoryPrimary(builder).getObject()));}}

第二数据源配置

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.wanfeng.multidatasource.repository.secondary",entityManagerFactoryRef = "entityManagerFactorySecondary",transactionManagerRef = "transactionManagerSecondary")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public class SecondaryConfig extends HikariConfig {private final JpaProperties jpaProperties;private final HibernateProperties hibernateProperties;public SecondaryConfig(JpaProperties jpaProperties, HibernateProperties hibernateProperties) {this.jpaProperties = jpaProperties;this.hibernateProperties = hibernateProperties;}@Bean(name = "secondaryDataSource")public DataSource secondaryDataSource() {return new HikariDataSource(this);}@Bean(name = "entityManagerSecondary")public EntityManager entityManager(EntityManagerFactoryBuilder builder) {return Objects.requireNonNull(entityManagerFactorySecondary(builder).getObject()).createEntityManager();}@Bean(name = "entityManagerFactorySecondary")public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary(EntityManagerFactoryBuilder builder) {return builder.dataSource(secondaryDataSource()).properties(hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(),new HibernateSettings())).packages("com.wanfeng.multidatasource.entity.secondary").persistenceUnit("secondaryPersistenceUnit").build();}@Bean(name = "transactionManagerSecondary")PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactorySecondary(builder).getObject()));}
}

springdatajpa配置多数据源相关推荐

  1. SpringBoot+SpringDataJpa配置双数据源SqlServer和Mysql

    有时候项目中会遇到需要配置双数据源的情况,到SpringBoot2.0版本后和之前配置双数据源的方法有些区别,这里我用的SpringBoot版本是2.0.3,废话不多说,给出主要步骤: 一.项目依赖p ...

  2. 微服务 第六章 springboot 通过Spring-data-jpa 配置Oracle数据源(简单步骤)

    1.pom.xml新添加依赖包: <dependency><groupId>org.springframework.boot</groupId><artifa ...

  3. Spring Boot使用spring-data-jpa配置Mysql多数据源

    转载请注明出处 :Spring Boot使用spring-data-jpa配置Mysql多数据源 我们在之前的文章中已经学习了Spring Boot中使用mysql数据库 在单数据源的情况下,Spri ...

  4. Spring中配置DataSource数据源的几种选择

    Spring中配置DataSource数据源的几种选择 在Spring框架中有如下3种获得DataSource对象的方法: 从JNDI获得DataSource. 从第三方的连接池获得DataSourc ...

  5. Proxool配置多数据源动态切换

    2019独角兽企业重金招聘Python工程师标准>>> 前段时间遇到多数据源动态切换问题,总结一下,做个记录,以备后续之需! 首先附上proxool连接池的配置方法:http://3 ...

  6. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

  7. c3p0如何配置多数据源的解决方法

    c3p0如何配置多数据源的解决方法 一.问题描述: 项目开发时,用c3p0管理数据连接.但是项目需要动态连接两个以上的数据库,如何用c3p0配置多数据源. 二.解决方法: 使用c3p0结合spring ...

  8. mybatis配置mysql数据源_springboot+mybatis+Druid配置多数据源(mysql+postgre)

    springboot+mybatis+Druid配置多数据源(mysql+postgre) 引入pom依赖 org.mybatis.spring.boot mybatis-spring-boot-st ...

  9. 配置Spring数据源c3p0与dbcp

    2019独角兽企业重金招聘Python工程师标准>>> 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般 ...

最新文章

  1. matlab-矩阵应用
  2. angular 动态取到的html片段 在页面的展示
  3. 追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (3)
  4. 君威u0073故障码解决_顽疾修复过程,君威没倒挡的变速箱故障就是这样修好
  5. 使用 hexo-git-backup 插件备份你的 Hexo 博客
  6. MyBatis 实例
  7. java乱码问题详解-值得收藏
  8. python install causes ModuleNotFoundError: No module named ‘_swigfaiss‘
  9. mysql查询触发器_mysql查看所有触发器以及存储过程等操作集合【转】
  10. 让你的系统无懈可击 史上优秀防火墙一览
  11. Cabbage教学(3)——数学计算和文件操作
  12. 跨境电商运营 | 如何利用Instagram进行电子商务营销
  13. 最左前缀 mysql优化器_mysql查询优化之索引类型、最左前缀
  14. 搬运工-白嫖-docker
  15. 什么是微信公众号开发
  16. crontab报错,但本地执行正常
  17. 【PSO三维路径规划】基于matlab粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
  18. linux ifcfg-eth0文件丢失,Linux备份ifcfg-eth0文件致使的网络故障问题
  19. M1卡片相关(读卡,写卡,加密算法)
  20. 静态磨损衡和动态磨损平衡

热门文章

  1. HTML+CSS实战-网页制作
  2. linux系统tar文件分割,如何拆分大的tar存档到一定大小的多个文件
  3. OCR API接口具体有哪些?
  4. 【《STL源码剖析》提炼总结】 第1节:空间配置器 allocator
  5. Vuex中mutations与actions的区别与用法
  6. html 消除td间隙,HTML 去调table表单里面td之间的间距
  7. Image captioning评价方法之Meteor
  8. jenkins使用Role-based Authorization Strategy插件管理视图任务权限
  9. Openwrt-IPv6设置
  10. Wi-Fi学习资料整理