【Mysql学习】Springboot配置数据源

前文链接

 【Mysql学习】JDBC学习-直连数据库

【Mysql学习】Springboot连接数据库

前面提到了springboot能够从application.properties文件读取数据配置,并且自动配置datasource数据,现在记录一下手动配置数据源的方式

单一数据源

创建一个DataSourceConfig类,创建datasource的bean,类上面@Configuration

    @Bean
    public DataSource dataSource(){
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(properties.getProperty("spring.datasource.url"));
        dataSource.setUsername(properties.getProperty("spring.datasource.username"));
        dataSource.setPassword(properties.getProperty("spring.datasource.password"));
        dataSource.setDriverClassName(properties.getProperty("spring.datasource.driver-class-name"));
        return dataSource;
    }

Application上面停用DataSourceAutoConfiguration

多数据源

数据源信息

@Component
@Data
@ConfigurationProperties(prefix="datasource")
public class DataSourceProperties {
    private static Logger logger = LoggerFactory.getLogger(DataSourceProperties.class);
    private HikariDataSource store;
    private HikariDataSource book;
    private HikariDataSource readers;
    private HikariDataSource verify;
}

数据源配置

    @Bean(name = {"dataSource"})
    public DataSource dataSource() {
        Map<Object, Object> targetDataSources = new HashMap();
        targetDataSources.put("book", this.properties.getBook());
        targetDataSources.put("readers", this.properties.getReaders());
        targetDataSources.put("verify", this.properties.getVerify());
        targetDataSources.put("store", this.properties.getStore());
        DynamicDataSource dataSource = new DynamicDataSource();
        dataSource.setTargetDataSources(targetDataSources);
        dataSource.setDefaultTargetDataSource(this.properties.getVerify());
        return dataSource;
    }

由于涉及到多个数据源,会需要进行动态切换,创建类DynamicDataSource,继承AbstractRoutingDataSource抽象类。重写determineCurrentLookupKey方法,返回当前线程的数据源信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值