springboot JdbcTemplate配置多数据源, 使用 druid 连接池

54 篇文章 1 订阅
本文详细介绍了如何在SpringBoot应用中整合JdbcTemplate实现多数据源配置,包括引入Druid连接池,配置两个数据源实例Bean,创建对应的JdbcTemplate Bean,并通过测试用例展示了如何在代码中切换使用不同的数据源进行数据操作。
摘要由CSDN通过智能技术生成
1.导入pom依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.22</version>
</dependency>
2.application.yml配置多数据源连接信息
spring:
  datasource:
    one:
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:mysql://localhost:3306/jdbc
      username: root
      password: root
    two:
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:mysql://localhost:3306/jdbc2
      username: root
      password: root
    druid:
      max-wait: 60000
      #在每次连接的时候判断一些连接是否有效
      test-on-borrow: true
      test-while-idle: true
3.配置多个数据源实例Bean

由于我们配置了多数据源,springboot提供的自动化配置也就失效,需要我们手动配置。

@Configuration
public class DataSourceConfig {

    @ConfigurationProperties(prefix = "spring.datasource.one")
    @Bean(name = "dsOne")
    public DataSource dsOne(){
        return DruidDataSourceBuilder.create().build();
    }

    @ConfigurationProperties(prefix = "spring.datasource.two")
    @Bean(name = "dsTwo")
    public DataSource dsTwo(){
        return DruidDataSourceBuilder.create().build();
    }

}

注:@Qualifier :告诉是使用哪个数据源

​ @ConfigurationProperties :加载application.properties中的哪个数据源

​ @Primary:自动装配时若出现多个Bean候选者时,被该注解修饰的bean将被作为首选者,否则会被抛出异常

4.配置多个JdbcTemplate实例Bean
@Configuration
public class JdbcTemplateConfig {

    @Bean
    public JdbcTemplate jdbcTemplateOne(@Qualifier("dsOne")DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }

    @Bean
    public JdbcTemplate jdbcTemplateTwo(@Qualifier("dsTwo")DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }

}
5.简单测试
@RestController
public class JdbcDsController {

    @Resource(name = "jdbcTemplateOne")
    private JdbcTemplate jdbcTemplateOne;

    @Autowired
    @Qualifier("jdbcTemplateTwo")
    private JdbcTemplate jdbcTemplateTwo;

    @GetMapping("/test1")
    public void test1(){
        List<Book> books1 = jdbcTemplateOne.query("select * from t_book", new BeanPropertyRowMapper<>(Book.class));
        List<Book> books2 = jdbcTemplateTwo.query("select * from t_book", new BeanPropertyRowMapper<>(Book.class));
        System.out.println(books1);
        System.out.println(books2);
    }

}

参考:

SpringBoot整合JdbcTemplate多数据源—使用druid 连接池

Spring Boot之JdbcTemplate多数据源配置与使用—使用默认HikariPool

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值