spring boot 多数据源配置(多种数据库)

最近一段时间在使用spring boot开发项目,其中有一个项目用到了多数据源的配置,网上的资料还是不太多,走了好多才找到一个合适的,把自己写的分享一下,做个笔记,以后也许有用,第一次写博客,不好勿喷!!

首先介绍下我的业务场景,此项目用到了两种数据库,一个是mysql,另一个是sqlserver,

首先第一步需要在application.yml中将多数据源的配置信息进行配置,

mysql数据源:

spring:  datasource:    driverClassName: com.mysql.jdbc.Driver    url: jdbc:mysql://192.168.28.230:3306/****?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true    username: ****    password: ****

sqlserver数据源配置
custom:  datasource:    names: ds1    ds1:      driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver      url: jdbc:sqlserver://ip:1433;databaseName=数据库名称      username: ****      password: ****

第二步编写数据源的配置和加载类:SQLserver数据源
@Configuration@MapperScan(basePackages = RdsDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "rdsSessionFactory")public class RdsDataSourceConfig {    static final String PACKAGE = "com.jyall.ehr.kaoqin";   //本项目中用的是mybatis,此路径为扫描的mapper的包结构    @Value("${custom.datasource.ds1.url}") //第一步中配置文件中的数据库配置信息    private String dbUrl;    @Value("${custom.datasource.ds1.username}")//同理为配置文件中信息    private String dbUser;    @Value("${custom.datasource.ds1.password}")//同理为配置文件信息    private String dbPassword;

    @Bean(name = "rdsDatasource")    public DataSource rdsDataSource() {        DataSource dataSource = new DataSource();        dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");        dataSource.setUrl(dbUrl);        dataSource.setUsername(dbUser);        dataSource.setPassword(dbPassword);        return dataSource;    }

    @Bean(name = "rdsTransactionManager")    public DataSourceTransactionManager rdsTransactionManager(@Qualifier("rdsDatasource") DataSource adsDataSource) {        return new DataSourceTransactionManager(rdsDataSource());    }

    @Bean(name = "rdsSessionFactory")     public SqlSessionFactory adsSqlSessionFactory(@Qualifier("rdsDatasource") DataSource adsDataSource) throws Exception {        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(adsDataSource);        return sessionFactory.getObject();    }}

mysql数据源
@Configuration@MapperScan(basePackages = AdsDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "adsSqlSessionFactory")public class AdsDataSourceConfig {    static final String PACKAGE = "com.jyall.ehr.mapper";  //扫描的mapper包结构

    @Value("${spring.datasource.url}") //配置文件中的配置    private String dbUrl;    @Value("${spring.datasource.username}") //配置文件中的配置    private String dbUser;    @Value("${spring.datasource.password}") //配置文件中的配置    private String dbPassword;

    @Bean(name = "adsDataSource")    @Primary   //此注解表示在默认的数据源配置,即在默认配置时用到的数据源配置    public DataSource adsDataSource() {        DataSource dataSource = new DataSource();        dataSource.setDriverClassName("com.mysql.jdbc.Driver");        dataSource.setUrl(dbUrl);        dataSource.setUsername(dbUser);        dataSource.setPassword(dbPassword);        return dataSource;    }

    @Bean(name = "adsTransactionManager")    @Primary    public DataSourceTransactionManager adsTransactionManager(@Qualifier("adsDataSource") DataSource adsDataSource) {        return new DataSourceTransactionManager(adsDataSource);    }

    @Bean(name = "adsSqlSessionFactory")    @Primary    public SqlSessionFactory adsSqlSessionFactory(@Qualifier("adsDataSource") DataSource adsDataSource) throws Exception {        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(adsDataSource);        return sessionFactory.getObject();    }}
至此多数据源的配置都已经完成,其他配置跟但数据源的配置时一样的,不在赘述。。。
时间: 2024-10-22 12:01:22

spring boot 多数据源配置(多种数据库)的相关文章

Spring Boot 多数据源配置

下面一个Java类是已经写好的根据配置文件动态创建多dataSource的代码,其原理也很简单,就是读取配置文件,根据配置文件中配置的数据源数量,动态创建dataSource并注册到Spring中. 代码如下: package org.springboot.sample.config; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.sql.DataSource; i

Spring Boot多数据源配置与使用

有时候,一个系统的功能,需要两个或两个以上的数据库, 在Spring Boot 中要如何配置? How to? #primary primary.spring.datasource.jdbc-url=jdbc:mysql://localhost:3316/test1 primary.spring.datasource.username=root primary.spring.datasource.password=root primary.spring.datasource.driver-cla

spring boot多数据源配置示例

1. application.properties #\u4E3B\u5E93\u914D\u7F6E spring.datasource.primary.url=jdbc:mysql://mysql.test.xxxxx.com:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false spring.datasource.primary.username=root spring.datasource.primary.pas

Spring Boot? 多数据源配置(二):Spring-data-jpa

效果图: 代码区: package com.wls.integrateplugs.datasource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.Configuration

关于Spring Boot 多数据源的事务管理

自己的一些理解:自从用了Spring Boot 以来,这近乎零配置和“约定大于配置”的设计范式用着确实爽,其实对零配置的理解是:应该说可以是零配置可以跑一个简单的项目,因为Spring Boot 有默认的配置,当默认的配置满足不了你的时候,这时候所谓的零配置只是换了一种方式而已,我们都知道程序员最擅长的就是写代码,相比来说xml文件还是有点蛋疼的: 行啊,Spring Boot说你不是擅长写代码,那我就把配置给你转换为写代码的形式,所以你会发现在Spring Boot 中使用@Configura

企业分布式微服务云SpringCloud SpringBoot mybatis (七)Spring Boot中使用JdbcTemplate访问数据库

本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. 首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdb

Spring Boot 全局异常配置

Spring Boot 全局异常配置,处理异常控制器需要和发生异常的方法在一个类中.使用 ControllerAdvice 注解 package com.li.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; import

Spring Boot SSL [https]配置例子

前言 本文主要介绍Spring Boot HTTPS相关配置,基于自签证书实现: 通过本例子,同样可以了解创建SSL数字证书的过程: 本文概述 Spring boot HTTPS 配置 server.port=8443 server.ssl.key-alias=selfsigned_localhost_sslserver server.ssl.key-password=changeit server.ssl.key-store=classpath:ssl-server.jks server.ss

Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties

目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationPropertiesAutoConfiguration 4.总结 3.外部化配置的核心 ????????接着上一章,<Spring Boot 外部化配置(一)> 3.2 @ConfigurationProperties 众所周知,当 Spring Boot 集成外部组件后,就可在 propertie