springboot之spring-boot-starter-jdbc

如果想SpringBoot为我们提供自动配置数据访问的基础设施,那么,我们需要直接或间接依赖spring-jdbc,一旦spring-jdbc位于我们SpringBoot应用的classpath,即会触发数据访问相关的自动配置行为,最简单的方法就是把spring-boot-starter-jdbc加为应用的依赖。

默认情况下,如果我们没有配置DataSource,那么,SpringBoot会为我们自动配置一个基于嵌入式数据库的DataSource,如果我们的SpringBoot项目只依赖一个数据库,那么,使用DataSource自动配置模块提供的配置参数是最方便的:

spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

当然我们也可以自己配置一个DataSource:

@Bean
public DataSource dataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setUrl("jdbc:log4jdbc:mysql://localhost:3306/springboot_start?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    return dataSource;
}

如果我们要配置多个DataSource实例指向多个数据库:

@Bean
public DataSource dataSource1() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
    dataSource.setUrl("jdbc:log4jdbc:mysql://localhost:3306/spring_boot_demo?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    return dataSource;
}

@Bean
public DataSource dataSource2() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
    dataSource.setUrl("jdbc:log4jdbc:mysql://localhost:3306/spring_boot_demo_two?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    return dataSource;
}

启动SpringBoot应用会抛出类似的异常:

Parameter 0 of method sqlSessionFactory in tk.mybatis.mapper.autoconfigure.MapperAutoConfiguration required a single bean, but 2 were found:
    - dataSource1: defined by method 'dataSource1' in class path resource [com/springboot/template/config/DataSourceConfig.class]
    - dataSource2: defined by method 'dataSource2' in class path resource [com/springboot/template/config/DataSourceConfig.class]

解决方法:

在其中的一个DataSource配置@Primary

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值