DruidDBConfig.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.pine.admin.druid;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.context.annotation.Primary;
  8. import javax.sql.DataSource;
  9. import java.sql.SQLException;
  10. /**
  11. * @Author: Pine
  12. * @Date: 2018/5/24 下午4:20
  13. * @Email:771190883@qq.com
  14. */
  15. @Slf4j
  16. @Configuration
  17. public class DruidDBConfig {
  18. @Value("${spring.datasource.url}")
  19. private String dbUrl;
  20. @Value("${spring.datasource.username}")
  21. private String username;
  22. @Value("${spring.datasource.password}")
  23. private String password;
  24. @Value("${spring.datasource.driver-class-name}")
  25. private String driverClassName;
  26. @Value("${spring.datasource.initialSize}")
  27. private int initialSize;
  28. @Value("${spring.datasource.minIdle}")
  29. private int minIdle;
  30. @Value("${spring.datasource.maxActive}")
  31. private int maxActive;
  32. @Value("${spring.datasource.maxWait}")
  33. private int maxWait;
  34. @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
  35. private int timeBetweenEvictionRunsMillis;
  36. @Value("${spring.datasource.minEvictableIdleTimeMillis}")
  37. private int minEvictableIdleTimeMillis;
  38. @Value("${spring.datasource.validationQuery}")
  39. private String validationQuery;
  40. @Value("${spring.datasource.testWhileIdle}")
  41. private boolean testWhileIdle;
  42. @Value("${spring.datasource.testOnBorrow}")
  43. private boolean testOnBorrow;
  44. @Value("${spring.datasource.testOnReturn}")
  45. private boolean testOnReturn;
  46. @Value("${spring.datasource.poolPreparedStatements}")
  47. private boolean poolPreparedStatements;
  48. @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
  49. private int maxPoolPreparedStatementPerConnectionSize;
  50. @Value("${spring.datasource.filters}")
  51. private String filters;
  52. @Value("{spring.datasource.connectionProperties}")
  53. private String connectionProperties;
  54. @Bean //声明其为Bean实例
  55. @Primary //在同样的DataSource中,首先使用被标注的DataSource
  56. public DataSource dataSource() {
  57. DruidDataSource datasource = new DruidDataSource();
  58. datasource.setUrl(this.dbUrl);
  59. datasource.setUsername(username);
  60. datasource.setPassword(password);
  61. datasource.setDriverClassName(driverClassName);
  62. //configuration
  63. datasource.setInitialSize(initialSize);
  64. datasource.setMinIdle(minIdle);
  65. datasource.setMaxActive(maxActive);
  66. datasource.setMaxWait(maxWait);
  67. datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  68. datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  69. datasource.setValidationQuery(validationQuery);
  70. datasource.setTestWhileIdle(testWhileIdle);
  71. datasource.setTestOnBorrow(testOnBorrow);
  72. datasource.setTestOnReturn(testOnReturn);
  73. datasource.setPoolPreparedStatements(poolPreparedStatements);
  74. datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
  75. try {
  76. datasource.setFilters(filters);
  77. } catch (SQLException e) {
  78. log.error("druid configuration initialization filter", e);
  79. }
  80. datasource.setConnectionProperties(connectionProperties);
  81. return datasource;
  82. }
  83. }