核心配置类
import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
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.util.StringUtils;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "hikariDataSourceProperties")
@ConfigurationProperties(prefix = "spring.datasource.datasource2")
public DataSourceProperties hikariDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "hikariDataSource")
@ConfigurationProperties(prefix = "spring.datasource.datasource1")
public DataSource hikariDataSource() {
DataSourceProperties properties = this.hikariDataSourceProperties();
return createHikariDataSource(properties);
}
private static HikariDataSource createHikariDataSource(DataSourceProperties properties) {
HikariDataSource dataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}
}
基础配置
spring:
datasource:
params: useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2B8
datasource1:
url: jdbc:mysql://ip:port/db_name?${spring.datasource.params}
username: db_user
password: db_pwd
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
max-lifetime: 18000
connection-timeout: 10000
idle-timeout: 3600000
min-idle: 4
max-pool-size: 12
minimum-idle: 20
datasource2:
url: jdbc:mysql://ip:port/db_name?${spring.datasource.params}
username: db_user
password: db_pwd
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
max-lifetime: 18000
connection-timeout: 10000
idle-timeout: 3600000
min-idle: 4
max-pool-size: 12
minimum-idle: 20