zhswDataSourceConfig.java 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.rongwei.zhsw.config;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
  4. import com.alibaba.druid.wall.WallConfig;
  5. import com.alibaba.druid.wall.WallFilter;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import org.springframework.core.env.Environment;
  11. import java.sql.SQLException;
  12. @Configuration
  13. public class zhswDataSourceConfig {
  14. @Value("${spring.datasource.druid.url}")
  15. private String dbUrl;
  16. @Value("${spring.datasource.druid.username}")
  17. private String username;
  18. @Value("${spring.datasource.druid.password}")
  19. private String password;
  20. @Value("${spring.datasource.druid.driver-class-name}")
  21. private String driverClassName;
  22. @Autowired
  23. private Environment evn;
  24. /**
  25. * 创建数据源对象
  26. * @return data source
  27. */
  28. private DruidDataSource createDefaultDataSource() throws SQLException {
  29. //如果不指定数据库类型,则使用默认数据库连接
  30. DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
  31. dataSource.setName("defaultDatasource");
  32. dataSource.setUrl(dbUrl+"&allowMultiQueries=true");
  33. dataSource.setUsername(username);
  34. dataSource.setPassword(password);
  35. dataSource.setDriverClassName(driverClassName);
  36. dataSource.setResetStatEnable(true);
  37. /*try {
  38. dataSource.setFilters("stat,wall");
  39. } catch (SQLException e) {
  40. e.printStackTrace();
  41. }*/
  42. dataSource.setInitialSize(8);
  43. dataSource.setMaxActive(100);
  44. dataSource.setMaxWait(7000);
  45. dataSource.setTimeBetweenEvictionRunsMillis(60000);
  46. dataSource.setMinEvictableIdleTimeMillis(300000);
  47. dataSource.setRemoveAbandoned(true);
  48. dataSource.setRemoveAbandonedTimeout(300);
  49. dataSource.setLogAbandoned(true);
  50. // 连接最大存活时间,默认是-1(不限制物理连接时间),从创建连接开始计算,如果超过该时间,则会被清理
  51. // dataSource.setPhyTimeoutMillis(15000);
  52. dataSource.setValidationQuery("select 1");
  53. dataSource.setTestWhileIdle(true);
  54. dataSource.setTestOnBorrow(false);
  55. dataSource.setTestOnReturn(false);
  56. dataSource.setPoolPreparedStatements(false);
  57. dataSource.setMaxOpenPreparedStatements(20);
  58. // 开启多条SQL语句批量执行
  59. WallConfig wallConfig = new WallConfig();
  60. wallConfig.setMultiStatementAllow(true);
  61. WallFilter wallFilter = new WallFilter();
  62. wallFilter.setConfig(wallConfig);
  63. /*List<Filter> filters = new ArrayList<>();
  64. filters.add(wallFilter);
  65. dataSource.setProxyFilters(filters);*/
  66. dataSource.getProxyFilters().add(wallFilter);
  67. dataSource.setFilters("stat,wall");//配置文件中的配置失效必须手动设置
  68. return dataSource;
  69. }
  70. /*@Bean
  71. @Primary
  72. public DynamicDataSource dataSource() throws SQLException {
  73. DynamicDataSource dynamicDataSource = new DynamicDataSource();
  74. DruidDataSource defaultDataSource = createDefaultDataSource();
  75. DynamicDataSource.dataSourcesMap.put("defaultDataSource", defaultDataSource);
  76. dynamicDataSource.setTargetDataSources(DynamicDataSource.dataSourcesMap);
  77. return dynamicDataSource;
  78. }*/
  79. // @Primary
  80. @Bean
  81. public DruidDataSource dataSourceOne() throws SQLException{
  82. return createDefaultDataSource();
  83. }
  84. }