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; } }