package com.mogujie.trade.db;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
/**
* @author by jiuru on 16/7/14.
*/
public class DruidDataSourceFactory implements DataSourceFactory<DruidDataSource> {
private List<Filter> filters = Collections.emptyList();
@Override
public DruidDataSource getDataSource(DataSourceConfig config) throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(config.getUrl());
dataSource.setUsername(config.getUsername());
dataSource.setPassword(config.getPassword());
// pool config
dataSource.setInitialSize(config.getInitialPoolSize());
dataSource.setMinIdle(config.getMinPoolSize());
dataSource.setMaxActive(config.getMaxPoolSize());
// common config
dataSource.setFilters("stat");
dataSource.setMaxWait(1000);
dataSource.setValidationQuery("SELECT 'x'");
dataSource.setTestWhileIdle(true);
dataSource.setTestOnBorrow(false);
dataSource.setTestOnReturn(false);
dataSource.setTimeBetweenEvictionRunsMillis(60000);
dataSource.setMinEvictableIdleTimeMillis(120000);
dataSource.setTimeBetweenLogStatsMillis(0);
dataSource.setProxyFilters(filters);
dataSource.init();
return dataSource;
}
public void setFilters(List<Filter> filters) {
this.filters = filters;
}
}