SpringBoot实现多数据源配置

springboot 多mysql,多oracle,多mongodb数据源 阅读详情

1、application.yml文件配置多数据源

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: oracle.jdbc.driver.OracleDriver
    #数据源1
    test1:
      jdbcUrl: jdbc:oracle:thin:@10.10.10.01:1521:test1
      username: test1
      password: test1
    #数据源2
    test2:
      jdbcUrl: jdbc:oracle:thin:@10.10.10.02:1521:test2
      username: test2
      password: test2

 
    initialSize: 50
    minIdle: 80
    maxActive: 300
    # 配置获取连接等待超时的时间
    maxWait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 30000
    validationQuery: select '1' from dual
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,slf4j
    removeAbandoned: true
    removeAbandonedTimeout: 180
    logAbandoned: true
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  jpa:
    show_sql: true
    format_sql: true

2、数据源配置类 DataSourceConfig


import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

/**
 * 数据源配置类
 */
@Configuration
public class DataSourceConfig {

    /**
     *  移动核保数据源
     * @return
     */
    @Bean(name = "test1")
    @ConfigurationProperties(prefix="spring.datasource.test1")
    public DataSource test1DataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     *  中间库数据源
     * @return
     */
    @Bean(name = "test2")
    @Primary
    @ConfigurationProperties(prefix="spring.datasource.test2")
    public DataSource test2DataSource() {
        return DataSourceBuilder.create().build();
    }


    @Bean(name = "test1Template")
    public JdbcTemplate test1Template(
            @Qualifier("test1") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }


    @Bean(name = "test2Template")
    public JdbcTemplate test2Template(
            @Qualifier("test2") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

3、test1数据源配置


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
import java.util.Map;

/**
 * test1数据源配置类
 */
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory",   //EntityManagerFactory引用
        transactionManagerRef = "transactionManager",      //transactionManager引用
        basePackages = {"com.jpa.test1"})//jpa接口package
public class Test1DatasourceConfig {

    @Resource(name = "test1")
    private DataSource datasource;

    /**
     * 注入JPA配置实体
     */
    @Autowired
    private JpaProperties jpaProperties;

    /**
     *  这里其实不需要配置数据库的方言.
     *  像hibernate.hbm2ddl.auto 可以在这里配置.但是我的是在application.properties中配置的.
     */
    private Map<String, Object> getVendorProperties() {
        HibernateSettings hibernateSettings = new HibernateSettings();
        return jpaProperties.getHibernateProperties(hibernateSettings);
    }

    /**
     * 配置EntityManagerFactory实体
     *
     * @param builder
     * @return 实体管理工厂
     * packages     扫描@Entity注释的软件包名称
     * persistenceUnit  持久性单元的名称。 如果只建立一个EntityManagerFactory,你可以省略这个,
     *                  但是如果在同一个应用程序中有多个,你应该给它们不同的名字
     * properties       标准JPA或供应商特定配置的通用属性。 这些属性覆盖构造函数中提供的任何值。
     */
    @Primary
    @Bean(name = "entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(datasource)
                .properties(getVendorProperties())
                .packages("com.entities.test1Entities")//entitie对应package
                .persistenceUnit("test1PersistenceUnit")
                .build();
    }

    /**
     * 配置EntityManager实体
     * @param builder
     * @return 实体管理器
     */
    @Primary
    @Bean(name = "entityManager")
    public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
        return entityManagerFactory(builder).getObject().createEntityManager();
    }

    /**
     * 配置事务transactionManager
     * @param builder
     * @return 事务管理器
     */
    @Primary
    @Bean(name = "transactionManager")
    public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactory(builder).getObject());
    }




}

Springboot多数据源配置 分库分表在大项目中非常的常见,此时就可能会遇到,一个项目需要连接多个数据源的情况,下面就以springboot框架来实现连接多个mysql数据源 阅读详情

相关推荐

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

mf97532的博客 2157

SpringBoot配置多数据源(application.yml)

简单三步解决springboot配置多数据源

u010786200的博客 1866

【项目实战】Spring Boot的数据源配置

在SpringBoot项目中,可以通过配置一个数据源来提供数据的访问和管理。SpringBoot提供了许多数据源的配置方式,如使用Spring Data JPA、Mybatis等框架来配置数据源。

奶爸的编程之路,也就一周冷个三天 2066

SpringBoot配置多数据源Mybatis/MybatisPlus/mysql

项目开发过程中,单一数据源不能满足开发需求或者需要用到主从数据库的时候,引入多数据源配置在项目中显得尤为必要。下面简单介绍一种在spingboot中结合mybatis针对同类型的数据源mysql进行多数据源配置和应用

TongHuYouthTeam的博客 1991

ACM论文LaTeX模板解析(三)| 文章顶部信息(Top matter))Part 1

文章顶部信息(Top matter))Part 1,文章类型、作者信息等

FreshManInC的博客 4853

CMAC算法原理

2、K1 通过以下运算导出:若 L 的最高有效位等于 0,则 K1 是 L 的左移 1 位。3、K2 通过如下运算导出:若 K1 的最高有效位等于 0,则 K2 是 K1 的左移 1 位。采用了 AES 算法中的类似 CBC 模式的加密方式,即对前一个分组的密文与当前分组的明文进行异或操作后在加密,2、分块处理:首先将消息分成多个固定长度的块,若消息长度不是块大小的倍数,则可以使用填充来将其填充到合适的大小。1、子密钥计算,通过主密钥生成子密钥(key1,key2),子密钥用于最后一个块处理;

sky的博客 1659

Spring Boot 实现多数据源配置

在application.properties或application.yml中配置多个数据源的连接信息。在 Spring Boot 中实现多数据源配置通常用于需要连接多个数据库的场景。首先,在pom.xml中添加MyBatis、数据库驱动和Spring Boot的JDBC依赖。在Spring Boot中,通过@Configuration类来配置多个数据源的Bean。将Mapper接口和XML文件分别放在不同的包中,以区分不同的数据源。主数据源Mapper XML文件。次数据源Mapper XML文件。

qq_33807380的博客 5831

redhawk:Low Power Analysis

1.rush current与switch cell 在standby状态下为了控制leakage power我们选择power gating的设计方式,使用power switch cell关闭block/power domain的电源。 power switch的基本介绍可见: 低功耗设计-Power Switch power switch的table中有四种状态,对应block工作、待机和上电,下电。low power analysis主要分析上电的过程。 上电过程可以看做mos电容

m0_61544122的博客 3206

01.【面试题】在SpringBoot中如何实现多数据源配置

多数据源(Multiple DataSources)是指在一个SpringBoot应用中同时连接和使用多个数据库的技术。这些数据库可以是: 多数据源架构 2. 为什么需要多数据源 2.1 业务场景需求 读写分离:主库写入,从库读取,提高性能 业务隔离:不同业务模块使用独立数据库 数据迁移:新老系统数据库并存 分布式架构:微服务架构中的数据分离 2.2 技术优势 性能优化:分散数据库压力 数据安全:重要数据隔离存储 扩展性好:易于水平扩展 故障隔离:一个数据库故障不影响其他业务 3. 多数据源的

yk_dflkg的博客 1373

Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0

Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0与Win10 系统下 VisualStudio2019 配置点云库 PCL1.11.1流程基本相同,主要区别有两点: * 从PCL1.12.0版本开始需要进行`启用增强指令集`的设置。 * 附加依赖项添加的内容不同。

点云侠的博客 7006

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2398

如何在Spring Boot中实现多数据源配置

通过本文的介绍,我们了解了在Spring Boot中实现多数据源配置的方法,并提供了两种常见的实现方式。合理地配置多数据源能够帮助我们在复杂的业务场景中有效管理数据,并提升系统的灵活性和性能。例如,一个系统可能需要连接多个数据库来处理不同的业务逻辑或者在不同环境(开发、测试、生产)中使用不同的数据库配置。Spring Boot提供了对多数据源的自动配置支持,可以通过配置文件进行多数据源的定义和配置。注解从配置文件中读取不同数据源的配置信息,并分别创建了两个数据源和对应的。在上述示例中,我们通过。

微赚淘客系统开发者博客 920

机器人全局路线规划导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对全局路线规划导读做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1504

Springboot +Mybatis实现多数据源配置

Springboot +Mybatis实现多数据源配置

马赛克大战的博客 4218

qwen2vl ValueError: Image features and image tokens do not match: tokens: 568, features 600

本文介绍了一个用于计算多模态数据集中样本token数量的Python工具,特别针对包含文本和图像的Qwen2-VL模型数据集。

q742971636的博客 1014

caverdock如何使用,一文给你多方案教学!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1390

Spring Boot中实现多数据源配置

通过本文的介绍,您学习了如何在Spring Boot应用中实现多数据源配置。通过配置多个数据源、使用@Qualifier注解和适当的配置文件,可以有效地管理和利用多个数据库实例,满足复杂业务场景下对数据管理的需求。

聚娃科技开发者博客 915

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

实现SpringBoot项目的多数据源配置的两种方式(dynamic-datasource-spring-boot-starter和自定义注解的方式)

本文详细介绍了两种数据源配置的方式

码农飞哥 3296

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java面试必备:在Spring Boot中实现多数据源配置

在现代企业应用开发中,一个应用需要连接多个数据库的场景越来越常见。Spring Boot提供了灵活的方式来实现多数据源配置,本文将详细介绍如何在Spring Boot项目中配置和使用多个数据源。

qq_58299462的博客 1796

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Spring Boot引入hutool实现简单缓存技术
下一篇: oracle时间操作进阶篇整理
心寒丶
心寒丶 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心寒丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值