springBoot+ druid配置多数据源

news2024/9/20 6:08:12

springBoot+ druid配置多数据源
1.在yml加:

spring:
  #1.JDBC数据源
  datasource:
    druid:
      first:
        username: PY
        password: ral2024
        url: jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
        driver-class-name: com.mysql.jdbc.Driver
        #初始化连接池的连接数量 大小,最小,最大
        initial-size: 5
        min-idle: 5
        max-active: 20
        #配置获取连接等待超时的时间
        max-wait: 60000
        #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        time-between-eviction-runs-millis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        min-evictable-idle-time-millis: 30000
        # 配置一个连接在池中最大生存的时间,单位是毫秒
        max-evictable-idle-time-millis: 3000000
        validation-query: SELECT 1 FROM user
        test-while-idle: true
        test-on-borrow: true
        test-on-return: false
        # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
        pool-prepared-statements: true
        max-pool-prepared-statement-per-connection-size: 20
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall,slf4j
        filter:
          stat:
            merge-sql: true
            slow-sql-millis: 5000
      second:
        username: L2_USER_Z1
        password: L2_USER_Z1
        url: jdbc:oracle:thin:@172.16.200.60:1521:PYCXMES.PYGT.COM
        driver-class-name: oracle.jdbc.OracleDriver
        #初始化连接池的连接数量 大小,最小,最大
        initial-size: 5
        min-idle: 5
        max-active: 20
        #配置获取连接等待超时的时间
        max-wait: 600000
        #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        time-between-eviction-runs-millis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        min-evictable-idle-time-millis: 30000
        # 配置一个连接在池中最大生存的时间,单位是毫秒
        max-evictable-idle-time-millis: 3000000
        validation-query: SELECT 1 FROM user
        test-while-idle: true
        test-on-borrow: true
        test-on-return: false
        # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
        pool-prepared-statements: true
        max-pool-prepared-statement-per-connection-size: 20
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall,slf4j
        filter:
          stat:
            merge-sql: true###
            slow-sql-millis: 5000

2.新建一个config文件
里面有3个类,分别:DruidConfigFirst ,DruidConfigSecond ,TwoDataSourceConfig
结构如图:
在这里插入图片描述

package com.alnan.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.alnan.dao.mysql", sqlSessionTemplateRef  = "firstSqlSessionTemplate")
public class DruidConfigFirst {
   
   

    @Bean(name = "firstSqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("firstDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        return bean.getObject();
    }

    @Bean(name = "firstTransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(@Qualifier("firstDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "firstSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("firstSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}
package com.alnan.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.alnan.dao.oracle", sqlSessionTemplateRef  = "secondSqlSessionTemplate")
public class DruidConfigSecond {
   
   

    @Bean(name = "secondSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        return bean.getObject();
    }

    @Bean(name = "secondTransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("secondDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "secondSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("secondSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}
package com.alnan.config;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

@Configuration
public class TwoDataSourceConfig {

    @Primary
    @Bean(name = "firstDataSource")
    @ConfigurationProperties("spring.datasource.druid.first")
    public DataSource first() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean(name = "secondDataSource")
    @ConfigurationProperties("spring.datasource.druid.second")
    public DataSource second() {
        return DruidDataSourceBuilder.create().build();
    }
}

然后怎么用呢:
在这里插入图片描述
dao 里面分开对应mysql的Mapper,oracle的Mapper

应用:正常注入就行,他会自己去对应数据库
在这里插入图片描述
3.pom:

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue通过iframe预览 pdf、word、xls、ppt、txt文件

vue通过iframe预览 pdf、word、xls、ppt、txt文件 iframe中预览只能直接打开pdf文件&#xff0c;其他文件需要通过office365预览。 效果&#xff1a; 组件代码&#xff1a; <!--* fileName: 文件预览-FileView.vue* date: yanghaoxing-2024-08-16 09:32:24 !--> <…

【飞桨AI实战】PaddleNLP大模型指令微调,从0打造你的专属家常菜谱管家

1.项目背景 家庭烹饪作为日常生活的重要组成部分&#xff0c;不仅关乎健康&#xff0c;也是家庭情感交流的重要方式。 相信很多小伙伴在烹饪时也会困惑&#xff1a;不知道如何选择合适的食材和菜谱&#xff0c;或者缺乏灵感来创造新的菜品。 最近看到一本《家庭实用菜谱大全…

win10配置pytorch环境+CUDA安装

步骤 1&#xff1a;更新显卡驱动 参考&#xff1a;如何在windows上 安装&更新 显卡的驱动_显卡驱动series和notebook-CSDN博客 进入英伟达官网&#xff1a;下载 NVIDIA 官方驱动 | NVIDIA 根据GPU类型选择对应的NVIDIA驱动&#xff0c;选好后点击“查找” 选择下载 GeFo…

记录|C#中panel与panel重叠显示问题

目录 前言一、问题在现二、方案解决三、效果展示更新时间 前言 参考文章&#xff1a; C#中winform中panel重叠无法显示问题的解决 一、问题在现 问题是我实现上图中效果&#xff0c;但是panel和panel的交界处放入其他组件后&#xff0c;会被部分覆盖【如下图示】 二、方案解决…

在线互动学习网站设计

TOC springboot249在线互动学习网站设计 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范…

音频矩阵主要功能及常规路数配置有哪些

音频矩阵&#xff0c;又称AUDIO矩阵或音频矩阵切换器&#xff0c;是一种用于管理和控制多个音频信号的设备。它具备多种功能&#xff0c;主要可以概括为以下几个方面&#xff1a; 一、主要功能 信号切换&#xff1a; AUDIO128128音频矩阵能够将多个音频源的信号输入到设备中&…

汽车EDI:法雷奥Valeo EDI项目案例

Valeo是一家总部位于法国的汽车零部件供应商。它专注于设计、生产、和销售各种创新产品和系统&#xff0c;以提高汽车的能效和减少排放。其业务主要分为舒适与驾驶辅助系统、动力总成系统、热系统以及可视系统。 本文将从业务的角度出发&#xff0c;带领大家了解供应商H公司在对…

投资中国硬科技,沙特钱多人不傻

"不止是商业的游戏" 作者 | 田 甜 编辑 | 卢旭成 “中东热”有可能热过了头。 在中东淘金者口中&#xff0c;流传着这样一句话&#xff1a;世界看中东&#xff0c;中东看沙特。过去一年里&#xff0c;中国的GP与创业者们组团赴沙特&#xff0c;目的无非两个——…

C语言 【自定义类型——结构体】(详细)

目录 1、结构体的定义 2、创建与初始化结构体变量 2.0 举例 2.1 结构体的特殊声明 2.1.0 匿名结构体 2.1.1 结构体的自引用 3、结构体内存对齐 3.0 为什么要内存对齐 3.1 对齐规则 3.2 如何修改默认对齐数 4、结构体传参 5、结构体中的位段使用 5.0 什么是位段&…

printf、fprintf、sprintf的使用和区别

printf、fprintf、sprintf的使用和区别 1、sprintf 函数 sprintf函数用于将格式化的数据写入字符串&#xff0c;其原型为&#xff1a; #include <stdio.h>/* *描述&#xff1a;将格式化的数据写入字符串 * *参数&#xff1a; * [out] str&#xff1a; 输出缓冲区…

Python聊天机器人-NoneBot2入门(2024新版)

1. NoneBot2 安装与使用 NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架&#xff08;下称 NoneBot&#xff09;&#xff0c;它基于 Python 的类型注解和异步优先特性&#xff08;兼容同步&#xff09;&#xff0c;能够为你的需求实现提供便捷灵活的支持。同时&…

煤炭检测实验室信息管理系统LIMS

在煤矿行业&#xff0c;实验室作为质量控制与技术创新的核心部门&#xff0c;其管理效率与数据准确性直接关系到企业的生产安全与经济效益。随着信息技术的飞速发展&#xff0c;实验室信息管理系统(LIMS)在煤矿行业的应用日益广泛&#xff0c;成为提升实验室管理水平、优化检测…

【动态规划,dp】P1044[NOIP2003 普及组] 栈 题解

题意 给定一个 n ( 1 ≤ n ≤ 18 ) n(1 \leq n \leq 18) n(1≤n≤18)&#xff0c;表示一个操作数序列&#xff0c; 1 , 2 , … , n 1,2,…,n 1,2,…,n&#xff08;图示为 1 到 3 的情况&#xff09;&#xff0c;栈 A 的深度大于 n n n。 现在可以进行两种操作&#xff0c; …

如何选出高品质 SD 存储卡 —— 具备高耐用度且防水防震抗冲击

SD卡&#xff08;Secure Digital Memory Card&#xff09;是一种广泛使用的存储器件&#xff0c;因其快速的数据传输速度、可热插拔的特性以及较大的存储容量&#xff0c;广泛应用于各种场景&#xff0c;例如在便携式设备如智能手机、平板电脑、运动相机等&#xff0c;用于存储…

录屏为什么录制不进去,没有声音?屏幕录制中的声音问题及解决方案

在数字时代&#xff0c;屏幕录制已成为我们日常工作和生活中不可或缺的一部分。无论是制作教学视频、记录在线课程&#xff0c;还是捕捉游戏精彩瞬间&#xff0c;一个好的屏幕录制软件都能让我们的工作更加高效&#xff0c;生活更加丰富。然而&#xff0c;许多用户在使用屏幕录…

谈一谈数据虚拟化的技术核心和应用架构

数据虚拟化&#xff08;Data Virtualization&#xff09;是对数据资源的抽象&#xff0c;通过屏蔽数据资源的存储位置和访问方式&#xff0c;能够将不同数据源、不同格式的数据资源&#xff0c;进行逻辑上的整合集成。这一技术方案与过去面对传统数仓的弊端&#xff0c;业界过去…

为什么说凤凰雪球期权是震荡市场中的稳健选择?

在当前股市波动的背景下&#xff0c;投资者会发现传统的投资策略难以适应市场的快速变化。在这样的环境下&#xff0c;一些创新的金融产品&#xff0c;如凤凰雪球&#xff0c;因其相对较高的安全性和潜在的收益性&#xff0c;逐渐受到市场的关注。 近期&#xff0c;股市呈现出…

大语言模型的简易可扩展增量预训练策略

前言 原论文&#xff1a;Simple and Scalable Strategies to Continually Pre-train Large Language Models翻译文件已整理至Github项目Some-Paper-CN&#xff0c;欢迎大家Star&#xff01; 摘要 大语言模型&#xff08;LLMs&#xff09;通常需要在数十亿个tokens上进行预训…

存储实验:华为异构存储在线接管与在线数据迁移(Smart Virtualization Smart Migration 特性)

目录 目的实验环境实验步骤参考文档1. 主机安装存储多路径2. v2存储创建Lun&#xff0c;映射给主机&#xff1b;主机分区格式化&#xff0c;写数据3. 将v2存储映射该成映射到v3存储上(v3存储和v2之间链路搭建&#xff0c;测通&#xff0c;远端设备&#xff09;&#xff08;Smar…

【深度学习】DDPM公式详解(第一期)

原论文&#xff1a;Denoising Diffusion Probabilistic Models (1)-1 p θ ( x 0 : T ) : p ( x T ) ∏ t 1 T p θ ( x t − 1 ∣ x t ) p_{\theta}(x_0:T) : p(x_T) \prod_{t1}^{T} p_{\theta}(x_{t-1} \mid x_t) pθ​(x0​:T):p(xT​)t1∏T​pθ​(xt−1​∣xt​) 这个…