配置文件 : applicaiton.properties
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM sys_user
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开 PSCache,并且指定每个连接上 PSCache 的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
filters: stat,wall,log4j
# 通过 connection-properties 属性打开 mergeSql 功能;慢 SQL 记录
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 配置 DruidStatFilter
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: .js,.gif,.jpg,.bmp,.png,.css,.ico,/druid/*
# 配置 DruidStatViewServlet
stat-view-servlet:
url-pattern: /druid/*
# IP 白名单,没有配置或者为空,则允许所有访问
allow: 127.0.0.1
# IP 黑名单,若白名单也存在,则优先使用
deny: 192.168.31.253
# 禁用 HTML 中 Reset All 按钮
reset-enable: false
# 登录用户名/密码
login-username: root
login-password: 123
工具类:
package cn.stephen.study.demoproject.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.beans.PropertyVetoException;
import java.sql.SQLException;
/**
* 数据库配置类
*/
@Configuration
public class DataSourceConfiguration {
@Value("${jdbc.driver}")
private String jdbcDriver;
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@Value("${jdbc.initialSize}")
private Integer initialSize;
@Value("${jdbc.minIdle}")
private Integer minIdle;
@Value("${jdbc.maxActive}")
private Integer maxActive;
@Value("${jdbc.maxWait}")
private Long maxWait;
@Value("${jdbc.timeBetweenEvictionRunsMillis}")
private Long timeBetweenEvictionRunsMillis;
@Value("${jdbc.minEvictableIdleTimeMillis}")
private Long minEvictableIdleTimeMillis;
@Value("${jdbc.validationQuery}")
private String validationQuery;
@Value("${jdbc.testWhileIdle}")
private Boolean testWhileIdle;
@Value("${jdbc.testOnBorrow}")
private Boolean testOnBorrow;
@Value("${jdbc.testOnReturn}")
private Boolean testOnReturn;
@Value("${jdbc.filters}")
private String filters;
private final static Logger log = LoggerFactory.getLogger(DataSourceConfiguration.class);
// @Bean(name = "dataSouce")
// public ComboPooledDataSource createDataSouce() throws PropertyVetoException {
// ComboPooledDataSource dataSource = new ComboPooledDataSource();
// dataSource.setDriverClass(jdbcDriver);
// dataSource.setJdbcUrl(jdbcUrl);
// dataSource.setUser(jdbcUsername);
// dataSource.setPassword(jdbcPassword);
// //关闭连接后不自动commit
// dataSource.setAutoCommitOnClose(false);
// return dataSource;
// }
@Bean(name = "dataSouce")
public DruidDataSource createDataSouce() {
DruidDataSource ds = new DruidDataSource();
ds.setUrl(jdbcUrl);
ds.setUsername(jdbcUsername);
ds.setPassword(jdbcPassword);
ds.setInitialSize(initialSize);
ds.setMinIdle(minIdle);
ds.setMaxActive(maxActive);
ds.setMaxWait(maxWait);
ds.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
ds.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
ds.setValidationQuery(validationQuery);
ds.setTestWhileIdle(testWhileIdle);
ds.setTestOnBorrow(testOnBorrow);
ds.setTestOnReturn(testOnReturn);
ds.setPoolPreparedStatements(false);
try {
ds.setFilters(filters);
}catch (SQLException e){
log.error("datasource Initialization produce error..");
}
ds.setConnectionProperties("druid.stat.slowSqlMillis=3000");
ds.setRemoveAbandoned(true);
ds.setRemoveAbandonedTimeout(1800);
ds.setLogAbandoned(true);
return ds;
}
}
配置完之后 启动报错:
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
发现pom 文件中没有引入 log4j 的jar 包
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>compile</scope>
引入就好了