springdatajpa配置多数据源
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配置多数据源相关推荐
- SpringBoot+SpringDataJpa配置双数据源SqlServer和Mysql
有时候项目中会遇到需要配置双数据源的情况,到SpringBoot2.0版本后和之前配置双数据源的方法有些区别,这里我用的SpringBoot版本是2.0.3,废话不多说,给出主要步骤: 一.项目依赖p ...
- 微服务 第六章 springboot 通过Spring-data-jpa 配置Oracle数据源(简单步骤)
1.pom.xml新添加依赖包: <dependency><groupId>org.springframework.boot</groupId><artifa ...
- Spring Boot使用spring-data-jpa配置Mysql多数据源
转载请注明出处 :Spring Boot使用spring-data-jpa配置Mysql多数据源 我们在之前的文章中已经学习了Spring Boot中使用mysql数据库 在单数据源的情况下,Spri ...
- Spring中配置DataSource数据源的几种选择
Spring中配置DataSource数据源的几种选择 在Spring框架中有如下3种获得DataSource对象的方法: 从JNDI获得DataSource. 从第三方的连接池获得DataSourc ...
- Proxool配置多数据源动态切换
2019独角兽企业重金招聘Python工程师标准>>> 前段时间遇到多数据源动态切换问题,总结一下,做个记录,以备后续之需! 首先附上proxool连接池的配置方法:http://3 ...
- springboot配置Druid数据源
springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...
- c3p0如何配置多数据源的解决方法
c3p0如何配置多数据源的解决方法 一.问题描述: 项目开发时,用c3p0管理数据连接.但是项目需要动态连接两个以上的数据库,如何用c3p0配置多数据源. 二.解决方法: 使用c3p0结合spring ...
- mybatis配置mysql数据源_springboot+mybatis+Druid配置多数据源(mysql+postgre)
springboot+mybatis+Druid配置多数据源(mysql+postgre) 引入pom依赖 org.mybatis.spring.boot mybatis-spring-boot-st ...
- 配置Spring数据源c3p0与dbcp
2019独角兽企业重金招聘Python工程师标准>>> 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般 ...
最新文章
- matlab-矩阵应用
- angular 动态取到的html片段 在页面的展示
- 追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (3)
- 君威u0073故障码解决_顽疾修复过程,君威没倒挡的变速箱故障就是这样修好
- 使用 hexo-git-backup 插件备份你的 Hexo 博客
- MyBatis 实例
- java乱码问题详解-值得收藏
- python install causes ModuleNotFoundError: No module named ‘_swigfaiss‘
- mysql查询触发器_mysql查看所有触发器以及存储过程等操作集合【转】
- 让你的系统无懈可击 史上优秀防火墙一览
- Cabbage教学(3)——数学计算和文件操作
- 跨境电商运营 | 如何利用Instagram进行电子商务营销
- 最左前缀 mysql优化器_mysql查询优化之索引类型、最左前缀
- 搬运工-白嫖-docker
- 什么是微信公众号开发
- crontab报错,但本地执行正常
- 【PSO三维路径规划】基于matlab粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
- linux ifcfg-eth0文件丢失,Linux备份ifcfg-eth0文件致使的网络故障问题
- M1卡片相关(读卡,写卡,加密算法)
- 静态磨损衡和动态磨损平衡
热门文章
- HTML+CSS实战-网页制作
- linux系统tar文件分割,如何拆分大的tar存档到一定大小的多个文件
- OCR API接口具体有哪些?
- 【《STL源码剖析》提炼总结】 第1节:空间配置器 allocator
- Vuex中mutations与actions的区别与用法
- html 消除td间隙,HTML 去调table表单里面td之间的间距
- Image captioning评价方法之Meteor
- jenkins使用Role-based Authorization Strategy插件管理视图任务权限
- Openwrt-IPv6设置
- Wi-Fi学习资料整理