java动态加载数据源_SpringBoot如何在运行时动态添加数据源

此方案适用于解决springboot项目运行时动态添加数据源,非静态切换多数据源!!!

一、多数据源应用场景:

1.配置文件配置多数据源,如默认数据源:master,数据源1:salve1...,运行时动态切换已配置的数据源(master、salve1互相切换),无法在运行时动态添加配置文件中未配置的数据源。

2.配置一个默认数据源,运行时动态添加新数据源使用(本博客适用于此场景)

二、解决方案:

Spring提供了AbstractRoutingDataSource用于动态路由数据源,第一种场景继承AbstractRoutingDataSource类并覆写其protected abstract Object determineCurrentLookupKey()即可;

而第二种场景我们直接覆写protected DataSource determineTargetDataSource方法即可。原理可看下AbstractRoutingDataSource对应源码,比较简单,不做赘述。

直接上干货:

import com.fizz.utils.spring.SpringUtils;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import javax.sql.DataSource;

public class DynamicDataSource extends AbstractRoutingDataSource {

private static final ThreadLocal dataSource = ThreadLocal.withI

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Springboot是一个非常流行的开源框架,它可以大幅度简化在Java Web应用中的开发流程。在Springboot中,我们可以使用JDBC来连接数据库。但是,我们在使用JDBC时常常会遇到数据库连接池的问题,因为每一次连接都需要连接池,而连接池是需要初始化的,这样会严重影响系统的性能。为了解决这个问题,Springboot提供了权限定的数据源(Datasource)及加载数据源的自动配置,这样我们就可以避免手动管理数据源,而只需要在配置文件中定义数据源即可,Springboot会在运行时自动加载配置。 在Springboot中,数据源的配置通常放在application.properties或application.yml文件中。我们可以使用以下配置来配置数据源: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=admin ``` 在配置数据源后,我们需要使用注解让Springboot自动加载数据源。在Springboot中,我们可以使用`@EnableAutoConfiguration`注解来启用自动配置,这个注解会自动配置所有支持的特性,比如数据源、缓存、MVC、JPA等等。我们也可以使用`@ComponentScan`注解指定要扫描的包,而不是让Springboot自动扫描。 综上所述,Springboot可以非常方便地加载数据源。通过在配置文件中定义数据源,再使用注解让Springboot自动加载,我们可以避免手动管理连接池,从而提高系统的性能。如果您正在开发Java Web应用,Springboot是一个非常不错的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值