Files
geg-gas-pcitc/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/JdbcConfig.java

67 lines
2.1 KiB
Java
Raw Normal View History

2025-10-10 09:20:48 +08:00
package com.pictc.config;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
import com.pictc.jdbc.JdbcContextUtils;
import com.pictc.utils.StringUtils;
@Configuration
public class JdbcConfig {
@Value("${spring.datasource.dynamic.datasource.master.username:itc_dne}")
private String globalUsername;
@Value("${spring.datasource.dynamic.datasource.master.password:itc_dne}")
private String globalPassword;
@Value("${spring.datasource.dynamic.datasource.master.driver-class-name:com.kingbase8.Driver}")
private String globalDriver;
@Bean
public JdbcContextUtils jdbcContextUtils() throws SQLException {
JdbcContextUtils contextUtils = new JdbcContextUtils();
contextUtils.setLogSource(logDataSource());
return contextUtils;
}
@Bean
public DataLogDbConfig logDataDbConfig() {
return new DataLogDbConfig();
}
/**
* 额外的日志数据源配置
*/
public DataSource logDataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
DataLogDbConfig dbConfig = logDataDbConfig();
// 日志数据库连接信息
dataSource.setUrl(dbConfig.getUrl());
dataSource.setUsername(StringUtils.opt(dbConfig.getUsername(),globalUsername));
dataSource.setPassword(StringUtils.opt(dbConfig.getPassword(),globalPassword));
dataSource.setDriverClassName(StringUtils.opt(dbConfig.getDriverClassName(),globalDriver));
// 日志库连接池参数(可独立配置)
dataSource.setInitialSize(5);
dataSource.setMinIdle(3);
dataSource.setMaxActive(20);
dataSource.setMaxWait(20000);
dataSource.setTimeBetweenEvictionRunsMillis(45000);
dataSource.setMinEvictableIdleTimeMillis(1200000);
// 连接验证
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestWhileIdle(true);
return dataSource;
}
}