java注解方式配置多数据源以及踩过的坑

2021-07-08
0

具体操作请看:https://blog.csdn.net/xiaosheng_papa/article/details/80218006
遇到的坑:在读取第二个数据源的时候,配置文件中的数据读取不到,原因是底层代码有个取username的操作,会把本机器的ip当做连接对象,解决方法两种。
第一种xml文件方式如下https://blog.csdn.net/qq_31678809/article/details/77479634
第二种注解方式:
参考第一个链接修改一下如下:

package com.baidu.yunzhixueyuan.config;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;

/**
 * @Date: 2019-03-13 14:51
 * @Author: v_gaobingbing
 */
@Configuration
public class DataSourceConfig {

    /**
     * db1数据库配置
     */
    @Bean("default")
    @ConfigurationProperties(prefix = "spring.datasource.default")
    public DataSource defaultSource() {
        return DruidDataSourceBuilder.create().build();
    }

    /**
     * db2数据库配置
     */
    @Bean("activity")
    @ConfigurationProperties(prefix = "spring.datasource.activity")
    public DataSource otherSource() {

        DruidDataSourceBuilder druidDataSourceBuilder = DruidDataSourceBuilder.create();
        DruidDataSource build = druidDataSourceBuilder.build();
        build.setUsername("xxx");
        build.setPassword("xxx");
        build.setUrl("xxx");
        return build;
    }

    /**
     * 动态数据库配置
     */
    @Primary
    @Bean(name = "dynamicDataSource")
    public DataSource dynamicDataSource() {
        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        // 默认数据源
        dynamicDataSource.setDefaultTargetDataSource(defaultSource());

        // 配置多数据源
        Map<Object, Object> dsMap = new HashMap(5);
        dsMap.put("default", defaultSource());
        dsMap.put("activity", otherSource());
        dynamicDataSource.setTargetDataSources(dsMap);
        return dynamicDataSource;
    }

    //    /**
    //     * 配置@Transactional注解事物
    //     * @return
    //     */
    //    @Bean
    //    public PlatformTransactionManager transactionManager() {
    //        return new DataSourceTransactionManager(dynamicDataSource());
    //    }
}

在这里手动配置username passport url 一这三个属性就可以了

https://blog.csdn.net/weixin_42714698/article/details/91428818

相关信息

评论