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