相关的依赖

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 多数据源的实现的更多相关文章

  1. Spring-Boot配置文件数据源配置项

    Spring-Boot配置文件数据源配置项(常用配置项为红色) 参数 介绍 spring.datasource.continue-on-error = false 初始化数据库时发生错误时,请勿停止 ...

  2. SpringBoot多数据源动态切换数据源

    1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...

  3. SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源

    SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...

  4. 搞定SpringBoot多数据源(1):多套源策略

    目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...

  5. 搞定SpringBoot多数据源(2):动态数据源

    目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...

  6. 搞定SpringBoot多数据源(3):参数化变更源

    目录 1. 引言 2. 参数化变更源说明 2.1 解决思路 2.2 流程说明 3. 实现参数化变更源 3.1 改造动态数据源 3.1.1 动态数据源添加功能 3.1.2 动态数据源配置 3.2 添加数 ...

  7. SpringBoot多数据源:动态数据源

    目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...

  8. Springboot 多数据源配置,结合tk-mybatis

    一.前言 作为一个资深的CRUD工程师,我们在实际使用springboot开发项目的时候,难免会遇到同时使用多个数据库的情况,比如前脚刚查询mysql,后脚就要查询sqlserver. 这时,我们很直 ...

  9. springBoot多数据源(不同类型数据库)项目

    一个基于springboot的多数据源(mysql.sqlserver)项目,先看看项目结构,注意dao层 多数据源mysql配置代码: package com.douzi.robotcenter.c ...

  10. springboot 双数据源+aop动态切换

    # springboot-double-dataspringboot-double-data 应用场景 项目需要同时连接两个不同的数据库A, B,并且它们都为主从架构,一台写库,多台读库. 多数据源 ...

随机推荐

  1. CentOS7版本的新特性

    综述 XFS  比 EXT 4更适合大文件处理,但消耗的CPU资源是EXT4的两倍 XFS 最大支持单文件16TB ,EXT4:50TB 最小1GB/建议每个逻辑CPU 1GB 逻辑CPU:核数,而非 ...

  2. elasticsearch 数据导入(九)

    说明 maven依赖 官方客户端 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.4/index.html <d ...

  3. 【Developer Log】ProGuard扰码可执行JAR包

    在项目上线之前需要通过ProGuard来对java的class进行混淆,以避免反编译方式,来保护自己的代码.ProGuard网上有很多资料,可以参考:http://blog.csdn.net/zhan ...

  4. Go语言基础介绍

    Go是一个开源的编程语言.Go语言被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言.目前,Go最新发布版本为1.10. Go语言可以运行在Linux.FreeBSD ...

  5. stl变易算法(三)

    本篇接着前面stl变易算法(一)和stl变易算法(二)继续讲述变易算法. 这里将介绍完余下的变易算法,主要有:填充fill.n次填充fill_n.随机生成元素generate.随机生成n个元素gene ...

  6. web压力測试-Web Bench

    1.web bench下载.地址:http://home.tiscali.cz/~cz210552/webbench.html 2.wen bench安装: [root@web111 tmp]#tar ...

  7. luogu1984 [SDOI2008] 烧水问题

    题目描述 给出水的比热容.冰点和沸点,问将$n$杯有$\frac{1}{n}\mathrm{kg}$的水从冰点加热到沸点所需最小热量.不一定相邻的两杯水间可以无热量损失地热传递至两者温度相同. 题解 ...

  8. luogu1522 牛的旅行

    题目大意 每个牧场里的某些坐标位置有牧区,牧区间有一个个路径(长度为位置间的直线距离).一个连通块内两个节点间的最短路径长度最大值为它的直径.请编程找出一条连接两个不同牧场的路径,使得连上这条路径后, ...

  9. 网上订餐系统的SQL SERVER 2005数据库连接

  10. kafka参数在线修改

    当kafka集群单个节点出现磁盘满了,需要清理历史topic数据:方法如下 1): 停掉kafka进程,将kafka的server.properties中的log.retention.hours=1/ ...