springboot配置多数据源springboot项目从数据库获取配置Springboot配置多数据源




springboot配置多数据源springboot项目从数据库获取配置Springboot配置多数据源

2022-07-21 2:26:46 网络知识 官方管理员

我们在实际项目开发中,经常会遇到一个项目需要同时连接、访问多个数据库,进行业务处理。或者是随着项目运营,业务越来越复杂,原来的一个库也要进行业务拆分为多个库,这时也会面临同样的问题,一个项目连接、访问多个库。又或者主从分离、读写分离等等情况。那么本文就主要是以代码来呈现、讲解在SpringBoot项目中我们如何配置多数据源

springboot配置多数据源(springboot项目从数据库获取配置)(1)

多数据库访问

一、数据库连接信息配置

在application.yml配置文件中,添加对应数据库连接信息,如下所示:

spring:datasource:master:#这是第一个数据源名称,可自定义url:jdbc:mysql://127.0.0.1:3306/master_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername:rootpassword:123456slave:#这是第二个数据源名称,可自定义url:jdbc:mysql://127.0.0.1:3306/slave_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername:rootpassword:123456

这里目前定义了两个数据源,库一“master”和库二“slave”,如果有更多的数据源,则按照这个配置规则继续往下追加即可。其中,数据源名称是自定义的,只要不重名就可以。

二、数据源配置

在DataSourceConfig中设置这两个数据库的连接配置。具体代码如下:

importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.boot.autoconfigure.jdbc.DataSourceProperties;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.Primary;importjavax.sql.DataSource;/***数据源配置*/@ConfigurationpublicclassDataSourceConfig{//数据源配置master数据源@Primary@Bean(name="masterDataSourceProperties")@ConfigurationProperties(prefix="spring.datasource.master")publicDataSourcePropertiesmasterDataSourceProperties(){returnnewDataSourceProperties();}//数据源master数据源@Primary@Bean(name="masterDataSource")publicDataSourcemasterDataSource(@Qualifier("masterDataSourceProperties")DataSourcePropertiesdataSourceProperties){returndataSourceProperties.initializeDataSourceBuilder().build();}//数据源配置slave数据源配置@Bean(name="slaveDataSourceProperties")@ConfigurationProperties(prefix="spring.datasource.slave")publicDataSourcePropertiesslaveDataSourceProperties(){returnnewDataSourceProperties();}//数据源slave数据源@Bean("slaveDataSource")publicDataSourceslaveDataSource(@Qualifier("slaveDataSourceProperties")DataSourcePropertiesdataSourceProperties){returndataSourceProperties.initializeDataSourceBuilder().build();}}

三、JdbcTemplate多数据源配置

配置数据源连接工厂,具体代码如下:

importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.Primary;importorg.springframework.jdbc.core.JdbcTemplate;importjavax.sql.DataSource;/***JdbcTemplate多数据源配置*/@ConfigurationpublicclassJdbcTemplateDataSourceConfig{//JdbcTemplate数据源mater@Primary@Bean(name="materJdbcTemplate")publicJdbcTemplatematerJdbcTemplate(@Qualifier("materDataSource")DataSourcedataSource){returnnewJdbcTemplate(dataSource);}//JdbcTemplate数据源slave@Bean(name="slaveJdbcTemplate")publicJdbcTemplateslaveJdbcTemplate(@Qualifier("slaveDataSource")DataSourcedataSource){returnnewJdbcTemplate(dataSource);}}

注:1、“@Primary”指的是在相同的bean中,优先使用该注解的bean。

2、“@Qualifier”指定某个bean有没有资格进行注入。

到此多数据源的配置工作已经完成。

四、应用

一般我们根据实际情况,在server层注入对应的dao就可以使用,如下代码所示:

/***Demo演示*/@ServicepublicclassDemoServiceImplimplementsDemoService{@Autowired@Qualifier("masterJdbcTemplate")privateJdbcTemplatemasterJdbcTemplate;@Autowired@Qualifier("slaveJdbcTemplate")privateJdbcTemplateslaveJdbcTemplate;/***查询master库*/@OverridepublicvoidqueryMaster(){//TODOmasterJdbcTemplate.queryForList()}/***查询slave库*/@OverridepublicvoidquerySlave(){//TODOslaveJdbcTemplate.queryForList()}}

以上就是SpringBoot项目多数据源配置代码实现及简单应用示例。


发表评论:

最近发表
网站分类
标签列表