springboot3 mybatisplus 动态数据源
时间: 2024-06-22 21:01:47 浏览: 130
springboot+mybatisplus+mysql 多数据源
Spring Boot 3.0 和 MyBatisPlus 配置动态数据源通常用于支持多数据库连接或读写分离场景。动态数据源允许根据业务需求灵活地切换不同的数据源,比如在读操作时使用从库,而在写操作时使用主库。
以下是配置动态数据源的基本步骤:
1. 添加依赖:在`pom.xml`中添加Spring Cloud Config客户端和相关动态数据源库的依赖,例如 Spring Cloud Gateway 和 Spring Cloud Config Server。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>spring-boot-starter-data-mybatis-plus</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
```
2. 配置数据源:使用Nacos作为配置中心存储数据库地址等信息。在Nacos中创建数据源配置,如`db1.properties`和`db2.properties`。
3. 创建`DataSourceProperties` bean:使用Spring Cloud Config的`ConfigClientBootstrapConfiguration`自动发现并注入Nacos中的数据源配置。
```java
@Configuration
public class DynamicDataSourceConfig {
@Value("${spring.datasource.name}")
private String dataSourceName;
@Bean
public DataSource dataSource() {
return ConfigClientPropertiesDataSourceBuilder
.of("spring.datasource." + dataSourceName)
.build();
}
}
```
4. 使用`@ConfigurationProperties`扫描数据源:让Spring Boot自动从Nacos读取数据源配置。
```java
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {}
```
5. 配置MyBatisPlus:在MyBatisPlus的全局配置中,将数据源绑定到对应的DataSource。
```java
@Configuration
public class GlobalConfig {
@Autowired
private DynamicDataSource dynamicDataSource;
@Bean
public GlobalConfig globalConfig() {
GlobalConfig config = new GlobalConfig();
config.setDataSource(dynamicDataSource);
return config;
}
}
```
6. 在需要切换数据源的地方,使用`@ConditionalOnProperty`注解或自定义切面,根据条件动态切换数据源。
阅读全文