package com.java110.db;
|
|
import com.alibaba.druid.pool.DruidDataSource;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
import javax.sql.DataSource;
|
import java.io.*;
|
import java.sql.SQLException;
|
|
/**
|
* 数据源配置
|
*/
|
@Configuration
|
public class DruidDataSourceConfig {
|
|
@Value("${spring.datasource.url}")
|
private String dbUrl;
|
|
@Value("${spring.datasource.username}")
|
private String username;
|
|
@Value("${spring.datasource.password}")
|
private String password;
|
|
@Value("${spring.datasource.driver-class-name}")
|
private String driverClassName;
|
|
@Value("${spring.datasource.druid.initial-size}")
|
private int initialSize;
|
|
@Value("${spring.datasource.druid.min-idle}")
|
private int minIdle;
|
|
@Value("${spring.datasource.druid.max-active}")
|
private int maxActive;
|
|
@Value("${spring.datasource.druid.max-wait}")
|
private int maxWait;
|
|
/**
|
* 构建dataSource
|
* 这里没有使用ShardingDataSourceFactory
|
* 因为要为durid数据源配置监听Filter
|
*
|
* @return 数据源对象
|
* @throws SQLException sql异常
|
* @throws IOException IO 异常
|
* @since 1.8
|
*/
|
@Bean
|
public DataSource dataSource() throws SQLException, IOException {
|
DruidDataSource dataSource = new DruidDataSource();
|
dataSource.setUrl(dbUrl);
|
dataSource.setUsername(username);
|
dataSource.setPassword(password);
|
dataSource.setDriverClassName(driverClassName);
|
|
//配置初始化大小、最小、最大
|
dataSource.setInitialSize(initialSize);
|
dataSource.setMinIdle(minIdle);
|
dataSource.setMaxActive(maxActive);
|
|
//配置获取连接等待超时的时间
|
dataSource.setMaxWait(maxWait);
|
|
// 配置Druid的SQL监控和日志打印
|
dataSource.setLogAbandoned(true);
|
dataSource.setRemoveAbandoned(true);
|
dataSource.setRemoveAbandonedTimeout(180);
|
dataSource.setFilters("stat,log4j2"); // 配置Log4j2作为日志实现
|
|
|
|
return dataSource;
|
}
|
|
|
}
|