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,并且它们都为主从架构,一台写库,多台读库. 多数据源 ...
随机推荐
- wmpnetwk.exe怎么禁启动
Win7控制面板--管理工具--服务,找到并选中"Windows Media Player Network Sharing Service"服务,右键点"属性" ...
- bootstrap-table与Spring项目集成实例收集
bootstrap-table项目官网:https://github.com/wenzhixin/bootstrap-table bootstrap-table各版本下载:https://github ...
- Intellij Idea 13:导入openfire源代码
网络上已经有篇关于openfire导入到Intellij Idea的文章(http://www.th7.cn/Program/java/201404/187018.shtml),不过在我导入的过程中, ...
- 初识ASP.NET---一般处理程序
问题来源: 今天在敲一个小的demo,利用Jquery实现级联下拉框,敲的过程中发现不管怎么和源代码对比都无法显示想要的功能. 这才想着原来是没有写后台代码,询问一清同学的时候,他告诉我能够利用ASP ...
- nyoj 95
#include<stdio.h> #include<queue> #include<algorithm> using namespace std; stru ...
- Codeforces Round #388 (Div. 2) C. Voting
题意:有n个人,每个人要么是属于D派要么就是R派的.从编号1开始按顺序,每个人都有一次机会可以剔除其他任何一个人(被剔除的人就不在序列中也就失去了剔除其他人的机会了):当轮完一遍后就再次从头从仅存的人 ...
- android自定义dialog中点击listview的item事件关闭dialog
import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; ...
- POJ - 3281 Dining(拆点+最大网络流)
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18230 Accepted: 8132 Descripti ...
- [python 基础]python装饰器(一)添加functools获取原函数信息以及functools.partial分析
python装饰器学习的时候有两点需要注意一下 1,被装饰器装饰的函数取其func.__name__和func.func_doc的时候得到的不是被修饰函数的相关信息而是装饰器wrapper函数的doc ...
- [NOI2018]归程(80pts)
https://www.zybuluo.com/ysner/note/1219964 题面 题面太长,难以概述,[戳我][1] \(ex10pts\ tree\) \(50pts\ n\leq1500 ...