12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package com.rongwei.zhsw.config;
- import com.alibaba.druid.pool.DruidDataSource;
- import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
- import com.alibaba.druid.wall.WallConfig;
- import com.alibaba.druid.wall.WallFilter;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.env.Environment;
- import java.sql.SQLException;
- @Configuration
- public class zhswDataSourceConfig {
- @Value("${spring.datasource.druid.url}")
- private String dbUrl;
- @Value("${spring.datasource.druid.username}")
- private String username;
- @Value("${spring.datasource.druid.password}")
- private String password;
- @Value("${spring.datasource.druid.driver-class-name}")
- private String driverClassName;
- @Autowired
- private Environment evn;
- /**
- * 创建数据源对象
- * @return data source
- */
- private DruidDataSource createDefaultDataSource() throws SQLException {
- //如果不指定数据库类型,则使用默认数据库连接
- DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
- dataSource.setName("defaultDatasource");
- dataSource.setUrl(dbUrl+"&allowMultiQueries=true");
- dataSource.setUsername(username);
- dataSource.setPassword(password);
- dataSource.setDriverClassName(driverClassName);
- dataSource.setResetStatEnable(true);
- /*try {
- dataSource.setFilters("stat,wall");
- } catch (SQLException e) {
- e.printStackTrace();
- }*/
- dataSource.setInitialSize(8);
- dataSource.setMaxActive(100);
- dataSource.setMaxWait(7000);
- dataSource.setTimeBetweenEvictionRunsMillis(60000);
- dataSource.setMinEvictableIdleTimeMillis(300000);
- dataSource.setRemoveAbandoned(true);
- dataSource.setRemoveAbandonedTimeout(300);
- dataSource.setLogAbandoned(true);
- // 连接最大存活时间,默认是-1(不限制物理连接时间),从创建连接开始计算,如果超过该时间,则会被清理
- // dataSource.setPhyTimeoutMillis(15000);
- dataSource.setValidationQuery("select 1");
- dataSource.setTestWhileIdle(true);
- dataSource.setTestOnBorrow(false);
- dataSource.setTestOnReturn(false);
- dataSource.setPoolPreparedStatements(false);
- dataSource.setMaxOpenPreparedStatements(20);
- // 开启多条SQL语句批量执行
- WallConfig wallConfig = new WallConfig();
- wallConfig.setMultiStatementAllow(true);
- WallFilter wallFilter = new WallFilter();
- wallFilter.setConfig(wallConfig);
- /*List<Filter> filters = new ArrayList<>();
- filters.add(wallFilter);
- dataSource.setProxyFilters(filters);*/
- dataSource.getProxyFilters().add(wallFilter);
- dataSource.setFilters("stat,wall");//配置文件中的配置失效必须手动设置
- return dataSource;
- }
- /*@Bean
- @Primary
- public DynamicDataSource dataSource() throws SQLException {
- DynamicDataSource dynamicDataSource = new DynamicDataSource();
- DruidDataSource defaultDataSource = createDefaultDataSource();
- DynamicDataSource.dataSourcesMap.put("defaultDataSource", defaultDataSource);
- dynamicDataSource.setTargetDataSources(DynamicDataSource.dataSourcesMap);
- return dynamicDataSource;
- }*/
- // @Primary
- @Bean
- public DruidDataSource dataSourceOne() throws SQLException{
- return createDefaultDataSource();
- }
- }
|