SpringBoot多数据源连接和切换

在一个项目中,有可能会遇到连接两个或者两个以上数据源的情况,目前我们就是这样

我们用的框架是SpringBoot,切换数据库采用注解搭配spring AOP的方式来实现.

1.在springBoot的 application.properties文件中添加数据源

# 数据库连接参数配置(主数据源)
spring.datasource.url=jdbc:oracle:thin:@192.168.1.60:1521:orcl
spring.datasource.username=admin
spring.datasource.password=pass1
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

#数据库连接参数配置(副数据源1)
slave.datasource.one.url=jdbc:oracle:thin:@192.168.1.66:1521:orcl
slave.datasource.one.username=admin
slave.datasource.one.password=pass2
slave.datasource.one.driver-class-name=oracle.jdbc.OracleDriver

#数据库连接参数配置(副数据源2)
slave.datasource.two.url=jdbc:oracle:thin:@192.168.1.62:1521:orcl
slave.datasource.two.username=admin
slave.datasource.two.password=pass3
slave.datasource.two.driver-class-name=oracle.jdbc.OracleDriver

slave.datasource.names =one,two

2.创建数据源注解TargetDataSource

@Target({ElementType.TYPE, ElementType.METHOD})// TYPE用于类,接口上,METHOD可以用于方法
@Retention(RetentionPolicy.RUNTIME)//一般都是用RUNTIME,因为这是在程序运行时可以对注解进行读取
@Documented//被 javadoc工具记录. 默认情况下,javadoc是不包括注解的
public @interface TargetDataSource {

    //数据源名称(用于根据名称切换数据源)
    String name();

}

3.创建动态数据源上下文管理

/*
* 动态数据源上下文管理
*/
public class DynamicDataSourceContextHolder {
	
    //存放当前线程使用的数据源类型信息
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
    //存放数据源id
    public static List<String> dataSourceIds = new ArrayList<String>();

    //设置数据源ID
    public static void setDataSourceType(String dataSourceType) {
        contextHolder.set(dataSourceType);
    }

    //获取数据源
    public static String getDataSourceType() {
        return contextHolder.get();
    }

    //清除数据源
    public static void clearDataSourceType() {
        con
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值