Spring Boot如何访问不同的数据库

在Spring Boot应用中连接多个数据库或数据源可以使用多种方式,下面介绍两种常用的方法:

1、使用Spring Boot官方支持的多数据源配置

spring boot提供了官方支持的多数据源配置,可以简单地配置和管理多个数据源。

需要在application.properties文件中分别添加多个数据源的配置,并通过@Primary注解指定默认数据源。然后,通过@Configuration注解创建一个DataSourceConfig类,将多个数据源注入到该类中,并通过@Bean注解将其注册为Spring Bean。最后,在需要访问某个数据源时,直接使用@Qualifier注解指定具体的数据源即可。

application.properties文件配置:

bash 复制代码
# 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类配置:

java 复制代码
@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注解指定具体的数据源即可,例如:

java 复制代码
@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文件配置:

bash 复制代码
# 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类配置:

java 复制代码
@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注解指定具体的数据源,例如:

java 复制代码
@Service
public class UserServiceImpl implements UserService {
    
    @Autowired
    @Qualifier("primaryDataSource")
    private DataSource primaryDataSource;
    
    @Autowired
    @Qualifier("secondDataSource")
    private DataSource secondDataSource;
    
    // ...
}

需要注意的是,在使用多个数据源时,需要确保每个数据源的配置信息正确,避免出现连接错误或者数据冲突等问题。同时,也需要考虑事务管理、数据同步等问题,以保证多个数据源之间的数据一致性。

相关推荐
以后不吃煲仔饭2 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师3 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
前端拾光者7 分钟前
利用D3.js实现数据可视化的简单示例
开发语言·javascript·信息可视化
The_Ticker8 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
程序猿阿伟9 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
傻啦嘿哟27 分钟前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
大数据编程之光31 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
初九之潜龙勿用31 分钟前
C#校验画布签名图片是否为空白
开发语言·ui·c#·.net
爪哇学长44 分钟前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
Dola_Pan1 小时前
C语言:数组转换指针的时机
c语言·开发语言·算法