多数据源配置 创建一个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";
}
}