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,并且它们都为主从架构,一台写库,多台读库. 多数据源 ...
随机推荐
- JavaSE 学习笔记之内部类(九)
内部类:如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内 ...
- 洛谷 P1843 奶牛晒衣服
题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...
- GIT的API主要应用示例
这几个简单的API应用,主要是通过TOKEN来获取GIT内空的例子. 但在获取GIT的文件列表时,要注意区分目录和文件的MODE差别( 100644 普通文件 040000 普通目录 ). impor ...
- 微信小程序的小问题(2)
1.在小程序中,有时需要用到背景图片,但是如果使用background-image的话,就无法控制图片的大小,background-image一般用于将图片压缩为1像素的背景图片,然后自动填充铺满.使 ...
- Android之怎样使用ListView列表视图
ListView 列表视图创建方法: (1)直接使用ListView 组件创建 (2)让Activity继承ListActivity实现 第一种:在XML中直接使用ListView 组件创建 在val ...
- Notepad++支持jQuery、html5、css3
Notepad++里的代码提示文件是以XML文件存放于目录 ....\Notepad++\plugins\APIs\下的. 将这三个文件:html.xml, css.xml, javascript.x ...
- [面试题]java中final finally finalized 的差别是什么?
final 是修饰符,能够用于修饰变量.方法和类.修饰变量时.代表变量不能够改动,也就是常量了.常量须要在定义时赋值或通过构造函数赋值,两者仅仅能选其一:修饰方法时,代表方法仅仅能调用,不能被 ove ...
- 飘逸的python - 极简的二叉树前中后序通杀函数
对于任一结点.能够按某种次序运行三个操作: 訪问结点本身(N) 遍历该结点的左子树(L) 遍历该结点的右子树(R) 用来表示顺序,即,前序NLR/中序LNR/后序LRN. 以下我们用namedtupl ...
- Codeforces Round #281 (Div. 2) D. Vasya and Chess 博弈
D. Vasya and Chess Vasya decided to learn to play chess. Classic chess doesn't seem interesting to ...
- luogu3358 最长k可重区间集问题 网络流
题目大意: 关键词:最小费用最大流 不相交路径 如果两个线段重叠了,那我们则把一个线段放在下一层,另一个线段放在上一层.把流量为1的流看作一条线,一条线把位于同一层的线段(互不重叠)都串了起来.最多有 ...