JAVA Spring Cloud框架中实现多数据源配置

本文介绍了在微服务环境中,如何使用Java Spring Cloud实现多数据源配置,涉及配置文件修改、数据源类创建、动态数据源管理以及AOP切面实现,确保在不同场景下能切换合适的数据源。
摘要由CSDN通过智能技术生成

业务描述: 在微服务搭建中经常会使用到多数据库情形这个时候,多数据源的切换将显得尤为重要下面是以Mysql数据库为数据源来实现的多数据源的切换方案之一。
实现过程:
1、 编写SpringCloud服务项目的配置文件,通常是修改项目中resources包下的bootstrap.yml文件(PS:也有可能是application.yml文件)这里使用yml文件格式来编写配置。

spring:
    #MySql数据源
    datasource:
        #test1数据库配置
        test1:
            #数据库连接地址
            jdbc-url: jdbc:mysql://${
   数据库连接地址IP}:${
   数据库连接端口号}/${
   数据库名称}?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
            #数据库用户名
            username: ${
   用户名}
            #数据库密码
            password: ${
   密码}
            #数据库连接类型这里使用了阿里巴巴的Druid连接方案,引入后会自动配置driver-class-name所需要的类型
            type: com.alibaba.druid.pool.DruidDataSource
            #默认初始化连接数
            initialSize: 5
            #最小连接数
            minIdle: 5
            #最大连接书
            maxActive: 50
            #连接等待时间
            maxWait: 60000
            timeBetweenEvictionRunsMillis: 60000
            minEvictableIdleTimeMillis: 300000
            #测试连接
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            poolPreparedStatements: true
            maxPoolPreparedStatementPerConnectionSize: 50
            filters: stat
            asyncInit: true
        #test2数据库配置
        #属性内容同上
        test2:
            jdbc-url: jdbc:mysql://${
   数据库连接地址IP}:${
   数据库连接端口号}/${
   数据库名称}?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
            username: ${
   用户名}
            password: ${
   密码}
            type: com.alibaba.druid.pool.DruidDataSource
            initialSize: 5
            minIdle: 5
            maxActive: 50
            maxWait: 60000
            timeBetweenEvictionRunsMillis: 60000
            minEvictableIdleTimeMillis: 300000
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            poolPreparedStatements: true
            maxPoolPreparedStatementPerConnectionSize: 50
            filters: stat
            asyncInit: true

2、 在项目中创建config->mybatis包在其中进行实现多数据源的编写(PS:也可以放在别的包下这个包是自定义的)
3、 新建DataSourceConfig类用来注入Mysql数据的配置创建连接池并注入事务管理
代码如下:

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.</
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Data Flow 是一个用于构建、部署和管理微服务的框架,它不直接提供多数据源配置,而是通过集成 Spring Boot Actuator 和第三方工具来实现。然而,在 Spring Cloud ,我们确实可以使用 Spring JPA 或者 Spring Boot 的@ConfigurationProperties 来配置多个数据源,通常在分布式系统为了支持读写分离或者事务隔离。 以下是配置多数据源的基本步骤: 1. **添加依赖**:引入 spring-boot-starter-data-jpa 和 spring-cloud-starter-config(如果用的是 Config Server)的依赖。 2. **配置数据源**:在application.yml 或 application.properties 文件为每个数据源定义一个独立的 profile,比如 `db1`, `db2` 等,每个profile有自己的数据库地址、用户名、密码等信息。 ```yaml spring: profiles: active: db1 jpa: properties: hibernate: dialect: ... # 数据库特定的Dialect url: ${jpa.url.db1} username: ${jpa.username.db1} password: ${jpa.password.db1} ``` 3. **使用@Profile注解**:在需要使用不同数据源的地方,可以使用 Spring 的 @Profile 注解来切换。 ```java @Configuration @Profile("db1") public class DatabaseConfig1 { @Bean public DataSource dataSource() { // 配置数据源 } } @Configuration @Profile("db2") public class DatabaseConfig2 { @Bean public DataSource dataSource() { // 配置另一个数据源 } } ``` 4. **配置事务管理器**:如果需要事务隔离,可能还需要为每个数据源配置单独的事务管理器。 5. **使用Repository或JPA**:在Repository或者Service层,你可以根据环境变量或Profile选择使用哪个数据源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值