springboot 多数据源的实现
相关的依赖
yml配置
java配置类:
DataSourceConfigurerjava
/** * Created by zhiqi.shao on 2017/11/20. */ @Configuration public class DataSourceConfigurer { @Bean @ConfigurationProperties("datasource.order") public DataSourceProperties orderDataSourceProperties() { return new DataSourceProperties(); } @Bean @ConfigurationProperties("datasource.order") public DataSource orderDataSource() { return orderDataSourceProperties().initializeDataSourceBuilder().build(); } @Bean @Primary @ConfigurationProperties("datasource.order-query") public DataSourceProperties orderQueryDataSourceProperties() { return new DataSourceProperties(); } @Bean @Primary @ConfigurationProperties("datasource.order-query") public DataSource orderQueryDataSource() { return orderQueryDataSourceProperties().initializeDataSourceBuilder().build(); } }
OrderDataSourceConfigurer.java
/** * Created by zhiqi.shao on 2017/11/20. */ @Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "entityManagerFactoryOrder", transactionManagerRef = "transactionManagerOrder", basePackages = {"com.hpe.ordersynchro.ordersEntity"} ) public class OrderDataSourceConfigurer { @Autowired @Qualifier("orderDataSource") private DataSource orderDataSource; @Bean(name = "entityManagerOrder") public EntityManager entityManager(EntityManagerFactoryBuilder builder){ return entityManagerFactoryOrder(builder).getObject().createEntityManager(); } @Bean(name= "entityManagerFactoryOrder") public LocalContainerEntityManagerFactoryBean entityManagerFactoryOrder(EntityManagerFactoryBuilder builder){ return builder .dataSource(orderDataSource) .properties(getVendorProperties(orderDataSource)) .packages(new String[]{"com.hpe.ordersynchro.ordersEntity"}) .persistenceUnit("orderPersistenceUnit") .build(); } @Autowired private JpaProperties jpaProperties; private Map<String,String> getVendorProperties(DataSource dataSource){ return jpaProperties.getHibernateProperties(dataSource); } @Bean(name ="transactionManagerOrder") public PlatformTransactionManager transactionManagerOrder(EntityManagerFactoryBuilder builder){ return new JpaTransactionManager((entityManagerFactoryOrder(builder).getObject())); }
OrderQueryDataSourceConfigurer.java
/** * Created by zhiqi.shao on 2017/11/20. */ @Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "entityManagerFactoryOrderQuery", transactionManagerRef = "transactionManagerOrderQuery", basePackages = {"com.hpe.ordersynchro.ordersQueryEntity"} ) public class OrderQueryDataSourceConfigurer { @Autowired @Qualifier("orderQueryDataSource") private DataSource orderQueryDataSource; @Primary @Bean(name = "entityManagerOrderQuery") public EntityManager entityManager(EntityManagerFactoryBuilder builder){ return entityManagerFactoryOrderQuery(builder).getObject().createEntityManager(); } @Primary @Bean(name= "entityManagerFactoryOrderQuery") public LocalContainerEntityManagerFactoryBean entityManagerFactoryOrderQuery(EntityManagerFactoryBuilder builder){ return builder .dataSource(orderQueryDataSource) .properties(getVendorProperties(orderQueryDataSource)) .packages(new String[]{"com.hpe.ordersynchro.ordersQueryEntity"}) .persistenceUnit("orderQueryPersistenceUnit") .build(); } @Autowired private JpaProperties jpaProperties; private Map<String,String> getVendorProperties(DataSource dataSource){ return jpaProperties.getHibernateProperties(dataSource); } @Primary @Bean(name ="transactionManagerOrderQuery") public PlatformTransactionManager transactionManagerOrderQuery(EntityManagerFactoryBuilder builder){ return new JpaTransactionManager((entityManagerFactoryOrderQuery(builder).getObject())); } }
注解:加了@primary就是默认数据源
分别是jpa和jpa对应实体的位置,我这里还是将它们放在了一个包下,所以上面配置的扫描路劲相同:
springboot 多数据源的实现的更多相关文章
- Spring-Boot配置文件数据源配置项
Spring-Boot配置文件数据源配置项(常用配置项为红色) 参数 介绍 spring.datasource.continue-on-error = false 初始化数据库时发生错误时,请勿停止 ...
- SpringBoot多数据源动态切换数据源
1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...
- SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源
SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...
- 搞定SpringBoot多数据源(1):多套源策略
目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...
- 搞定SpringBoot多数据源(2):动态数据源
目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...
- 搞定SpringBoot多数据源(3):参数化变更源
目录 1. 引言 2. 参数化变更源说明 2.1 解决思路 2.2 流程说明 3. 实现参数化变更源 3.1 改造动态数据源 3.1.1 动态数据源添加功能 3.1.2 动态数据源配置 3.2 添加数 ...
- SpringBoot多数据源:动态数据源
目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...
- Springboot 多数据源配置,结合tk-mybatis
一.前言 作为一个资深的CRUD工程师,我们在实际使用springboot开发项目的时候,难免会遇到同时使用多个数据库的情况,比如前脚刚查询mysql,后脚就要查询sqlserver. 这时,我们很直 ...
- springBoot多数据源(不同类型数据库)项目
一个基于springboot的多数据源(mysql.sqlserver)项目,先看看项目结构,注意dao层 多数据源mysql配置代码: package com.douzi.robotcenter.c ...
- springboot 双数据源+aop动态切换
# springboot-double-dataspringboot-double-data 应用场景 项目需要同时连接两个不同的数据库A, B,并且它们都为主从架构,一台写库,多台读库. 多数据源 ...
随机推荐
- Redis学习总结(1)——Redis内存数据库详细教程
1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数 ...
- [luoguP2342] 叠积木(并查集)
传送门 up[i] 表示一个木块上面有多少个 all[i] 表示整个连通块内有多少个 那么 一个木块下面的木块个数为 all[root[i]] - up[i] - 1 注意:up[i] 可以在 fin ...
- JLOI2018 记
2018JL省选记 又是一年省选.今年的我,依然好菜啊... [Day 0] 呼...好紧张,明天就省选了.下周就有学长退役了吧,机房又该恢复冷清了吧.只剩下为数不多的几个i7接送着来来往往的OIer ...
- SQL LEN() 函数 ,case when,聚合函数的使用方法
SELECT aa.[User_Id],cc.[User_Name],dd.Name AS DepName,aa.Module_Id,aa.Module_Name, SUM(CASE aa.Opera ...
- 605B. Lazy Student(codeforces Round 335)
B. Lazy Student time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- hook 鼠标键盘消息实例分析
1.木马控制及通信方法包含:双管道,port重用.反弹技术.Hook技术,今天重点引用介绍一下hook的使用方法,hook信息后能够将结果发送到hacker邮箱等.实现攻击的目的. 转自:http:/ ...
- curses-键盘编码-openssl加解密【转】
本文转载自;https://zhuanlan.zhihu.com/p/26164115 1.1 键盘编码 按键过程:当用户按下某个键时, 1.键盘会检测到这个动作,并通过键盘控制器把扫描码(scan ...
- 协议-网络-安全协议:SSH(安全外壳协议)
ylbtech-协议-网络-安全协议:SSH(安全外壳协议) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立 ...
- Spark底层原理简化版
目录 Spark SQL/DF的执行过程 集群运行部分 Aggregation Join Shuffle Tungsten 内存管理机制 缓存敏感计算(Cacheaware computation) ...
- 一段时间加载的js函数
<html><head><meta charset="utf8"><script type="text/javascript&q ...