c语言编程笔录

首页 >   > 笔记大全

笔记大全

Springboot多数据源配置之怎么整合dynamic-datasource

更新时间:2023-07-18
前言: 在分布式系统中,多数据源的配置是一项重要的技术,它可以帮助我们实现数据的分库分表、读写分离、故障容错等功能。而Spring Boot作为一种轻量级的Java开发框架,提供了强大的功能和简化的配置,使得多数据源配置变得更加简单便捷。而dynamic-datasource是一个功能强大的多数据源解决方案,在Spring Boot中整合dynamic-datasource可以轻松实现多数据源的配置和使用。 一、引入dynamic-datasource依赖 首先,在pom.xml文件中引入dynamic-datasource的依赖:
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>2.7.2</version>
</dependency>
二、配置数据源信息 在application.yml配置文件中,我们需要添加多个数据源的配置信息:
dynamic:
  datasource:
    primary:
      url: jdbc:mysql://localhost:3306/primary?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
    secondary:
      url: jdbc:mysql://localhost:3306/secondary?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
三、配置动态数据源 在Spring Boot的配置文件中,我们需要添加一个类来配置动态数据源,在该类中,我们需要定义数据源的名称和数据源的配置信息:
@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "dynamic.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix = "dynamic.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @Primary
    public DataSource dynamicDataSource(DataSource primaryDataSource, DataSource secondaryDataSource) {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put("primary", primaryDataSource);
        targetDataSources.put("secondary", secondaryDataSource);

        DynamicDataSource dataSource = new DynamicDataSource();
        dataSource.setTargetDataSources(targetDataSources);
        dataSource.setDefaultTargetDataSource(primaryDataSource);

        return dataSource;
    }
}
在上述代码中,我们通过@Bean注解将两个数据源添加到Spring的容器中,并通过@Primary注解标记了默认数据源。同时,我们还创建了DynamicDataSource的实例,并设置了目标数据源和默认数据源的配置。 四、使用动态数据源 在使用多数据源时,我们可以使用@DS注解来标记需要切换数据源的方法或类:
@DS("primary")
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> getUsers() {
        return userMapper.selectList(new QueryWrapper<>());
    }
}
在上述代码中,我们通过@DS("primary")注解标记了该类的方法使用的是primary数据源。 总结: 通过上述步骤,我们可以完成Spring Boot与dynamic-datasource的整合,实现多数据源的配置和使用。使用动态数据源,可以帮助我们更好地管理和维护数据库,提高系统的性能和稳定性。同时,dynamic-datasource还提供了其他一些强大的功能,如动态添加数据源、动态切换数据源、读写分离等。通过合理配置和使用多数据源,我们可以满足不同场景下的需求,提升系统的灵活性和可扩展性。