spring多数据源

第 3-6 课:Spring Data JPA 多数据源的使⽤

耗尽温柔 提交于 2020-01-06 22:09:53
项⽬中使⽤多个数据源在以往⼯作中⽐较常⻅,微服务架构中不建议⼀个项⽬使⽤多个数据源。在微服务架 构下,⼀个微服务拥有⾃⼰独⽴的⼀个数据库,如果此微服务要使⽤其他数据库的数据,需要调⽤对应库的 微服务接⼝来调⽤,⽽不是在⼀个项⽬中连接使⽤多个数据库,这样微服务更独⽴、更容易⽔平扩展。 虽然在微服务架构下,不提倡⼀个项⽬拥有多个数据源,但在 Spring Boot 体系中,项⽬实现多数据源调⽤ 却是⼀件很容易的事情,本节课将介绍 Spring Data JPA 多数据源的使⽤。 Spring Data JPA 使⽤多数据源的整体思路是,配置不同的数据源,在启动时分别加载多个数据源配置,并且 注⼊到不同的 repository 中。这样不同的 repository 包就有不同的数据源,使⽤时注⼊对应包下的 repository ,就会使⽤对应数据源的操作。 对照前两课的示例项⽬,本课内容将会对项⽬结构有所调整,如下: 其中: confifig 启动时加载、配置多数据源; GitChat model 存放数据操作的实体类; repository ⽬录下有两个包路径 test1 和 test2 ,分别代表两个不同数据源下的仓库,这两个包下的 repository 可以相同也可以不同。 下⾯演示⼀下项⽬。 多数据源的⽀持 配置 Spring Data JPA 对多数据源的使⽤,⼀般分为以下⼏步

多数据源一致性事务解决方案

廉价感情. 提交于 2020-01-01 12:49:33
spring 多数据源配置 spring 多数据源配置一般有两种方案: 1、在spring项目启动的时候直接配置两个不同的数据源,不同的sessionFactory。在dao 层根据不同业务自行选择使用哪个数据源的session来操作。 2、配置多个不同的数据源,使用一个sessionFactory,在业务逻辑使用的时候自动切换到不同的数据源,有一个种是在拦截器里面根据不同的业务现切换到不同的datasource;有的会在业务层根据业务来自动切换。但这种方案在多线程并发的时候会出现一些问题,需要使用threadlocal等技术来实现多线程竞争切换数据源的问题。 【本文暂时只讨论第一种方案】 spring多事务配置主要体现在db配置这块,配置不同的数据源和不同的session 1、一下贴出 spring-db.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www

Spring Boot 2.x 多数据源配置之 MyBatis 篇

别等时光非礼了梦想. 提交于 2020-01-01 12:30:47
场景假设:现有电商业务,商品和库存分别放在不同的库 配置数据库连接 app: datasource: first: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1/product?useSSL=false username: root password: root configuration: maximum-pool-size: 10 second: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1/stock?useSSL=false username: root password: root configuration: maximum-pool-size: 10 添加配置类 FirstConfig @Configuration @MapperScan( basePackages = {"com.karonda.springboot2datasourcesmybatis.dao.first"},// 1. dao 层所在的包 sqlSessionTemplateRef = "firstSqlSessionTemplate") public class FirstConfig { @Bean

采用多个数据源是Spring的配置

独自空忆成欢 提交于 2020-01-01 12:18:45
XML配置多多源文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org

Spring Hibernate多数据源配置

点点圈 提交于 2020-01-01 12:15:46
Spring2.0.1以后的版本已经支持配置多数据源,并且可以在运行的时候动态加载不同的数据源。通过继承AbstractRoutingDataSource就可以实现多数据源的动态转换。目前做的项目就是需要访问12个数据源,每个数据源的表结构都是相同的,所以要求数据源的变动对于编码人员来说是透明,也就是说同样SQL语句在不同的环境下操作的数据库是不一样的。具体的配置如下: 一、首先需要写一个静态的键值对照类: package cn.sunline.suncard.sde.dp.db; public class DataSourceMap { public static final String acd="ACD"; public static final String trm= "TRM"; } 这个类主要在使用的时候当作获得数据源的标志使用。 二、建立一个获得和设置上下文的类: package cn.sunline.suncard.sde.dp.db; /** * 数据源容器类 * @author tpf * @version 1.0 2012-8-27 * @see [相关类/方法] * @since [产品/模块版本] */ public class CustomerContextHolder { /** * 数据库连接配置容器 */ private static

SpringBoot多数据源配置

风流意气都作罢 提交于 2019-12-28 15:07:54
SpringBoot多数据源配置 在用springboot开发项目时,随着业务量的扩大,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于Spring-data-jpa配置多数据源,希望对大家有所帮助 项目目录结构 1.png 1、先在application.yml 中配置多个数据库 spring: datasource: database1: url: jdbc:mysql://localhost:3306/database1?useUnicode=true&characterEncoding=utf8 username: root password: 12345678 driverClassName: com.mysql.jdbc.Driver database2: url: jdbc:mysql://localhost:3306/database2?useUnicode=true&characterEncoding=utf8 username: root password: 12345678 driverClassName: com.mysql.jdbc.Driver # type: com.alibaba.druid.pool.DruidDataSource jpa: database: mysql show-sql: true

springboot mybatis 多数据源配置

走远了吗. 提交于 2019-12-27 02:09:12
首先导入mybatis等包,这里就不多说。 下面是配置多数据源和mybatis,每个数据源对应一套mybatis模板 数据源1: 1 package com.aaaaaaa.config.datasource; 2 3 import javax.sql.DataSource; 4 5 import org.apache.ibatis.session.SqlSessionFactory; 6 import org.mybatis.spring.SqlSessionFactoryBean; 7 import org.mybatis.spring.SqlSessionTemplate; 8 import org.mybatis.spring.annotation.MapperScan; 9 import org.springframework.beans.factory.annotation.Qualifier; 10 import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; 11 import org.springframework.boot.context.properties.ConfigurationProperties; 12 import org.springframework.context

Spring+Hibernate配置多数据源

房东的猫 提交于 2019-12-26 20:35:06
配置说明 在实际应用中,经常会用到读写分离,这里就这种情况进行Spring+Hibernate的多数据源配置。此处的配置只是让读的方法操作一个数据库,写的方法操作另外一个数据库。 注:我这里的配置JDBC连接是放在properties文件中的,当然你也可以直接写在ApplicationCpntext.xml文件中或其他的配置方式。 配置步骤 1、配置多数据库 在jdbc.Properties中,配置两个数据库的连接。在此处的例子如下(我这里都是使用的MySql,如果要使用其他的请更换驱动): [java] view plain copy ## MySQL local jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url= jdbc:mysql://localhost:3306/数据库名?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull jdbc.username=root jdbc.password=root ## MySql Server jdbc_t.driverClassName=com.mysql.jdbc.Driver jdbc_t.url= jdbc:mysql:

SpringBoot配置多数据源

梦想的初衷 提交于 2019-12-22 19:49:07
SpringBoot配置多数据源 一.分包实现 在application.properties中配置两个数据库: ## test1 database spring.datasource.test1.url=jdbc:mysql://localhost:3307/multipledatasource1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false spring.datasource.test1.username=root spring.datasource.test1.password=root spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver ## test2 database spring.datasource.test2.url=jdbc:mysql://localhost:3307/multipledatasource2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false spring.datasource.test2.username=root spring.datasource.test2

SpringBoot集成Mybatis多数据源(学习笔记)

断了今生、忘了曾经 提交于 2019-12-18 16:37:20
SpringBoot集成Mybatis 多数据源 pom.xml: <?xml version="1.0" encoding="UTF-8"?> < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi: schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion > 4.0.0 </ modelVersion > < artifactId > spring-boot-demo-orm-mybatis </ artifactId > < version > 1.0.0-SNAPSHOT </ version > < packaging > jar </ packaging > < name > spring-boot-demo-orm-mybatis </ name > < description > Demo project for Spring Boot </ description > < parent > < groupId >