SpringBoot使用JdbcTemplate的双数据源配置

来源:互联网 发布:战网改美服删除软件 编辑:程序博客网 时间:2024/06/05 09:44

数据源配置:

spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driverspring.datasource.primary.url=jdbc:mysql://read:3306/sevend?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=falsespring.datasource.primary.username=aaaspring.datasource.primary.password=aaaspring.datasource.primary.max-active=40spring.datasource.primary.max-idle=5spring.datasource.primary.min-idle=5spring.datasource.primary.initial-size=5spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driverspring.datasource.secondary.url=jdbc:mysql://write:3306?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=falsespring.datasource.secondary.username=rootspring.datasource.secondary.password=spring.datasource.secondary.max-active=10spring.datasource.secondary.max-idle=5spring.datasource.secondary.min-idle=5spring.datasource.secondary.initial-size=5

然后让spring boot帮你实例化两个dataSource并分别注入到两个JdbcTemplate中

package com.dafy.sevend.boss.customer.manager.dao;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;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 org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;@Configurationpublic class DataSourceConfig {    @Bean(name = "primaryDataSource")    @Qualifier("primaryDataSource")    @ConfigurationProperties(prefix = "spring.datasource.primary")    public DataSource primaryDataSource(){        return DataSourceBuilder.create().build();    }    @Bean(name = "secondaryDataSource")    @Qualifier("secondaryDataSource")    @Primary    @ConfigurationProperties(prefix = "spring.datasource.secondary")    public DataSource secondaryDataSource(){        return DataSourceBuilder.create().build();    }    @Bean(name = "primaryJdbcTemplate")    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource")DataSource primaryDataSource){        return new JdbcTemplate(primaryDataSource);    }    @Bean(name = "secondaryJdbcTemplate")    public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource")DataSource secondaryDataSource){        return new JdbcTemplate(secondaryDataSource);    }}
使用的时候直接在dao层注入你要使用的JdbcTemplate即可

    @Autowired    @Qualifier("primaryJdbcTemplate")    private JdbcTemplate jdbcTemplate;    @Autowired    @Qualifier("secondaryJdbcTemplate")    private JdbcTemplate writableJdbcTemplate;