SpringBoot配置连接两个或多个数据库的实现
作者:不掉头发的阿水 发布时间:2024-01-14 14:40:36
在Spring Boot应用中连接多个数据库或数据源可以使用多种方式,下面介绍两种常用的方法:
1、使用Spring Boot官方支持的多数据源配置
Spring Boot提供了官方支持的多数据源配置,可以简单地配置和管理多个数据源。
需要在application.properties文件中分别添加多个数据源的配置,并通过@Primary注解指定默认数据源。然后,通过@Configuration注解创建一个DataSourceConfig类,将多个数据源注入到该类中,并通过@Bean注解将其注册为Spring Bean。最后,在需要访问某个数据源时,直接使用@Qualifier注解指定具体的数据源即可。
application.properties文件配置:
# Primary DataSource
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Secondary DataSource
spring.second-datasource.url=jdbc:mysql://localhost:3306/db2
spring.second-datasource.username=root
spring.second-datasource.password=root
spring.second-datasource.driver-class-name=com.mysql.cj.jdbc.Driver
DataSourceConfig类配置:
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondDataSource")
@ConfigurationProperties(prefix="spring.second-datasource")
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
}
在需要访问某个数据源时,直接使用@Qualifier注解指定具体的数据源即可,例如:
@Service
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource;
@Autowired
@Qualifier("secondDataSource")
private DataSource secondDataSource;
// ...
}
2、使用第三方库实现多数据源(本次使用Druid连接池)
除了使用Spring Boot官方支持的多数据源配置,也可以使用一些开源的第三方库来实现多数据源的配置。
例如,使用HikariCP、Druid等连接池,通过手动配置多个数据源并将其注入到Spring容器中,实现对多个数据源的访问。同时,也可以通过AOP等方式来实现动态切换数据源的功能,从而更加灵活地管理多个数据源。
application.properties文件配置:
# Primary DataSource
jdbc.primary.url=jdbc:mysql://localhost:3306/db1
jdbc.primary.username=root
jdbc.primary.password=root
jdbc.primary.driver-class-name=com.mysql.cj.jdbc.Driver
# Secondary DataSource
jdbc.second.url=jdbc:mysql://localhost:3306/db2
jdbc.second.username=root
jdbc.second.password=root
jdbc.second.driver-class-name=com.mysql.cj.jdbc.Driver
DataSourceConfig类配置:
@Configuration
public class DataSourceConfig {
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix="jdbc.primary")
public DataSource primaryDataSource() {
return new DruidDataSource();
}
@Bean(name = "secondDataSource")
@ConfigurationProperties(prefix="jdbc.second")
public DataSource secondDataSource() {
return new DruidDataSource();
}
}
在需要访问某个数据源时,可以通过@Qualifier注解指定具体的数据源,例如:
@Service
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource;
@Autowired
@Qualifier("secondDataSource")
private DataSource secondDataSource;
// ...
}
需要注意的是,在使用多个数据源时,需要确保每个数据源的配置信息正确,避免出现连接错误或者数据冲突等问题。同时,也需要考虑事务管理、数据同步等问题,以保证多个数据源之间的数据一致性。
来源:https://blog.csdn.net/lps12345666/article/details/130530125


猜你喜欢
- 1.为什么要使用域名访问部署在Istio中的程序我们在Istio中部署的程序一定不止有一个,前面我们已经在Istio中部署了Httpbin、
- ASP如何分两段读取数据库?中间插入广告。代码如下:<!--#include file="conn.asp"--&
- 呵呵,前面说拉那么半天废话,可能你已经看的不耐烦拉,好,这就说道正题,大家跟着我来一起把sa给大卸八块首先打开SQL中的企业管理器,接着在工
- Django2.0 通过URL访问上传的文件(pdf、picture等)Django是一个成熟的web框架,基于python实现,有很多的优
- 本文实例讲述了redis数据库及与python交互用法。分享给大家供大家参考,具体如下:redis数据操作1.string类型:主要存储字符
- WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。官方对
- 前言以前在写C/C++代码时,可以在代码中预定义一些版本宏定义,然后再编译时从外部传入数据作为版本号。 golang代码不支持宏定义,如果每
- 背景:有些数学题目经常要用到数形结合思想,尤其是一些函数题目,如果能够把函数图像画出来进行解题的话,思路会更加清晰明了。python绘图主要
- 声明本文章为个人拙见,仅仅提供参考,不一定正确,各位大佬可以发表自己的意见。题目描述考虑到在虚拟机部署中资源提供商通常希望自己的收益最大化,
- 教程前先给大家看看小编的实现成果吧!图1:图2:图3:教程:实现这个功能我们需要五个php文件:login.php(登录界面,如图2)<
- python版本:3.5.4系统:win10 x64通过网页下载视频方法一:使用urllib.retrieve函数放函数只需要两个参数即可下
- 今天闲逛在网上时,看到一个11px大小的字体,显示却很清晰,赶紧查看站点的CSS,这字体称叫做:PMingLiu。效果相当不错,相比于我们使
- 前言我们在开发后台项目常常会遇到一个情况,功能模块列表数据导出Excel功能,但列表中某个字段无法通过Sql联表查询,且一次性查询再匹对也不
- 目录实例001:数字组合实例002:“个税计算”实例003:完全平方数实例004:这天第几天实例005:三数排序实例006:斐波那契数列实例
- asp ajax json教程首先用ACCESS建json.mdb的库,然后建一个表t_jsontable,字段如下:jt_id,jt_na
- 一、 功能Android端或者Android终端的远程截图至本地电脑中二、使用说明1.adb截图工具可用于Android手机及Android
- boto操作import datetimeimport boto.s3.connectionfrom boto.s3.key import
- 索引是什么?索引是帮助MySQL进行高效查询的一种数据结构。好比一本书的目录,能加快查询的速度索引的结构?索引可以有B-Tree索引,Has
- 必要准备你得有一个sqlserver数据库,并且要和vs项目连接。关于VS连接sqlserver数据库的教程前几天发过了,链接如下VS202
- 本文实例讲述了Golang编程实现删除字符串中出现次数最少字符的方法。分享给大家供大家参考,具体如下:描述:实现删除字符串中出现次数最少的字