dynamic-datasource-spring-boot-starter 配置
时间: 2025-01-07 17:48:16 浏览: 10
### 配置 `dynamic-datasource-spring-boot-starter` 示例
#### 添加依赖项
为了使用 `dynamic-datasource-spring-boot-starter`,需在项目的 `pom.xml` 文件中引入相应的 Maven 依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>x.x.x</version> <!-- 替换为最新版本号 -->
</dependency>
```
此操作允许项目利用该启动器实现多数据源的支持功能[^1]。
#### 应用属性配置
接着,在 `application.yml` 或者 `application.properties` 中定义多个数据库连接的信息。以下是采用 YAML 格式的示例配置文件片段:
```yaml
spring:
datasource:
dynamic:
primary: master # 设置默认的数据源或者数据源组, 默认值即为master
strict: false # 是否严格检测数据源, 默认false不检测, 如果设置为true的话, 每次切换数据源都会进行校验是否存在
ds:
master:
url: jdbc:mysql://localhost:3306/master_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
slave_1:
url: jdbc:mysql://localhost:3307/slave_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
上述配置指定了两个不同的 MySQL 数据库实例作为主 (`master`) 和从 (`slave_1`) 数据源[^2]。
#### 动态切换数据源
通过自定义注解或编程方式可以在运行期间灵活地改变当前使用的数据源。例如,可以创建一个名为 `@TargetDataSource` 的自定义注解来指定特定的方法应该访问哪个数据源:
```java
import org.springframework.core.annotation.AliasFor;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface TargetDataSource {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
}
```
之后就可以像下面这样标记服务层中的某个方法以指示其应使用哪一个具体的数据源了:
```java
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@TargetDataSource(name="slave_1")
public List<User> getAllUsersFromSlave(){
return userRepository.findAll();
}
}
```
这段代码展示了如何在一个 Spring Boot 应用程序里轻松完成对不同数据源之间的切换控制[^3]。
阅读全文