springboot项目实现多数据源配置使用dynamic-datasource-spring-boot-starter的操作步骤

 更新时间:2023年06月10日 14:52:08   作者:无聊大侠hello world  
这篇文章主要介绍了springboot项目实现多数据源配置使用dynamic-datasource-spring-boot-starter,本文分步骤结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

要在Spring Boot项目中使用 dynamic-datasource-spring-boot-starter 实现多数据源配置,可以按照以下步骤进行操作:

1.添加依赖:

在项目的 pom.xml 文件中添加 dynamic-datasource-spring-boot-starter 依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>2.5.4</version>
</dependency>

2.配置数据源:

在项目的配置文件(application.propertiesapplication.yml)中配置多个数据源,例如:

dynamic:
  datasource:
    names: primary, secondary
    primary:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC
      username: root
      password: password1
    secondary:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/db2?useSSL=false&serverTimezone=UTC
      username: root
      password: password2

3.配置数据源切换策略:
创建一个配置类,用于配置数据源切换策略。例如,可以使用 RoundRobinRoutingDataSourceLoadBalanceDataSource 进行数据源的轮询切换或负载均衡切换。示例代码如下:

@Configuration
public class DataSourceConfig 
{
    @Autowired
    private DataSourceProperties dataSourceProperties;
    @Bean
    @ConfigurationProperties(prefix = "dynamic.datasource")
    public DataSource dataSource() 
    {
        return DataSourceBuilder.create().build();
    }
    @Bean
    @Primary
    public DataSourceProvider dataSourceProvider()
    {
        DataSourceProperties.DataSourceType defaultDataSourceType = dataSourceProperties.getType();
        Map<String, DataSource> dataSources = new HashMap<>();
        dataSources.put("primary", dataSourceProperties.getPrimary());
        dataSources.put("secondary", dataSourceProperties.getSecondary());
        DynamicDataSourceProvider dynamicDataSourceProvider = new DynamicDataSourceProvider();
        dynamicDataSourceProvider.setDefaultDataSourceType(defaultDataSourceType);
        dynamicDataSourceProvider.setDataSources(dataSources);
        return dynamicDataSourceProvider;
    }
    @Bean
    public DynamicDataSource dynamicDataSource(DataSourceProvider dataSourceProvider)
    {
        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        dynamicDataSource.setDataSourceProvider(dataSourceProvider);
        return dynamicDataSource;
    }
    @Bean
    public DataSourceTransactionManager transactionManager(DynamicDataSource dynamicDataSource)
    {
        return new DataSourceTransactionManager(dynamicDataSource);
    }
    @Bean
    public SqlSessionFactory sqlSessionFactory(DynamicDataSource dynamicDataSource) throws Exception 
    {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dynamicDataSource);
        return sessionFactoryBean.getObject();
    }
}

4.使用数据源:

在需要使用不同数据源的地方,可以使用 @DS 注解指定要使用的数据源,例如:

@Service
public class UserService 
{
    @Autowired
    private UserMapper userMapper;
    @DS("primary")
    public User getPrimaryUserById(Long id) 
    {
        return userMapper.selectById(id);
    }
    @DS("secondary")
    public User getSecondaryUserById(Long id)
    {
        return userMapper.selectById(id);
    }
}

以上是使用 dynamic-datasource-spring-boot-starter 实现多数据源配置的基本步骤和示例代码。通过这样的配置,可以轻松地在Spring Boot项目中使用多个数据源进行数据库操作。

到此这篇关于springboot项目实现多数据源配置使用dynamic-datasource-spring-boot-starter的文章就介绍到这了,更多相关springboot使用dynamic-datasource-spring-boot-starter内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Geotools实现shape文件的写入功能

    Geotools实现shape文件的写入功能

    Geotools作为开源的Java GIS三方库,已经成为GIS服务器端的主流开源库,其功能非常强大,涉及到GIS业务的方方面面,其中就包括GIS数据的读写,今天小编就借助Geotools来实现shape数据的写入,需要的朋友可以参考下
    2023-08-08
  • Exception in thread main java.lang.NoClassDefFoundError错误解决方法

    Exception in thread main java.lang.NoClassDefFoundError错误解决方

    这篇文章主要介绍了Exception in thread main java.lang.NoClassDefFoundError错误解决方法,需要的朋友可以参考下
    2016-08-08
  • java地理坐标系及投影间转换代码示例

    java地理坐标系及投影间转换代码示例

    在地图投影中,经常需要将坐标从不同的坐标系之间进行转换,下面这篇文章主要给大家介绍了关于java地理坐标系及投影间转换的相关资料,需要的朋友可以参考下
    2024-08-08
  • 一文详解Mybatis-plus的介绍与使用

    一文详解Mybatis-plus的介绍与使用

    Mybatis-Plus 是 MyBatis 的一个增强工具,专门针对于传统MyBatis开发中sql需要手动进行映射配置繁琐缺点的一款框架技术。本文将为大家详细讲讲Mybatis-plus的介绍与使用,感兴趣的可以了解一下
    2022-07-07
  • 解决mybatis返回boolean值时数据库返回null的问题

    解决mybatis返回boolean值时数据库返回null的问题

    这篇文章主要介绍了解决mybatis返回boolean值时数据库返回null的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • java分割字符串多种方法(附例子)

    java分割字符串多种方法(附例子)

    这篇文章主要给大家介绍了关于java分割字符串多种方法的相关资料,Java中有多种方法可以实现字符串分割,文中将每张方法都给出了代码示例,需要的朋友可以参考下
    2023-10-10
  • Java String.replace()方法

    Java String.replace()方法"无效"的原因及解决方式

    这篇文章主要介绍了Java String.replace()方法"无效"的原因及解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • SpringBoot中fastjson自定义序列化和反序列化的实战分享

    SpringBoot中fastjson自定义序列化和反序列化的实战分享

    在fastjson库中,为了提供灵活的序列化和反序列化机制,设计了一系列的扩展点,以下是在SpringBoot和SpringClould环境中对这些扩展点的详细介绍及其实战使用,通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-07-07
  • Spring Boot实现web.xml功能示例详解

    Spring Boot实现web.xml功能示例详解

    这篇文章主要介绍了Spring Boot实现web.xml功能,通过本文介绍我们了解到,在Spring Boot应用中,我们可以通过注解和编程两种方式实现web.xml的功能,包括如何创建及注册Servlet、Filter以及Listener等,需要的朋友可以参考下
    2023-09-09
  • java MultipartFile文件上传重命名详细代码示例

    java MultipartFile文件上传重命名详细代码示例

    在文件上传功能开发中,为防止文件重名导致数据覆盖,常见的做法是在文件名前加上UUID或时间戳来区分,这篇文章主要介绍了java MultipartFile multipartFile文件上传重命名的相关资料,需要的朋友可以参考下
    2024-09-09

最新评论