Spring Boot之JdbcTemplate多数据源配置与使用

多数据源配置 创建一个Spring配置类,定义两个DataSource用来读取application.properties中的不同配置。如下例子中,冷备份数据源配置为spring.datasource.cold开头的配置

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.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
 
@Configuration
public class DataSourceConfig {

    @Bean(name = "coldDataSource")
    @Qualifier("coldDataSource")
    @ConfigurationProperties(prefix="spring.datasource.cold")
    public DataSource coldDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "coldJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(
            @Qualifier("coldDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

application.properties

spring.datasource.cold.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.cold.url=jdbc:mysql://192.168.1.94:3308/db_cold?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
spring.datasource.cold.username=admin
spring.datasource.cold.password=123456
spring.datasource.cold.driver-class-name=com.mysql.jdbc.Driver

对JdbcTemplate的支持比较简单,只需要为其注入对应的datasource即可,如下例子,在创建JdbcTemplate的时候注入名为coldJdbcTemplate数据源来区分不同的JdbcTemplate。

使用

import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value="/datatrans")
@Api(value = "/datatrans", description = "冷热数据迁移API", position = 1)
public class DatatransColdController {

    @Autowired
    @Qualifier("coldJdbcTemplate")
    protected JdbcTemplate coldJdbcTemplate;

    @RequestMapping(value="/testJDBCTemple",method = RequestMethod.GET)
    public String testJDBCTemple() throws Exception {
        coldJdbcTemplate.execute("SELECT * FROM  PROJECT WHERE PROJECT_ID=1");
        return "SUCCESS";
    }

}

猜你喜欢

转载自my.oschina.net/u/2484728/blog/1632443