DruidDBConfiguration.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package com.uas.sso;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import com.alibaba.druid.support.http.StatViewServlet;
  4. import com.alibaba.druid.support.http.WebStatFilter;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  9. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.context.annotation.Primary;
  13. import javax.sql.DataSource;
  14. import java.sql.SQLException;
  15. @Configuration
  16. public class DruidDBConfiguration {
  17. private Logger logger = LoggerFactory.getLogger(DruidDBConfiguration.class);
  18. @Value("${datasource.url}")
  19. private String url;
  20. @Value("${datasource.username}")
  21. private String username;
  22. @Value("${datasource.password}")
  23. private String password;
  24. @Value("${datasource.driverClassName}")
  25. private String driverClassName;
  26. @Value("${datasource.initialSize}")
  27. private int initialSize;
  28. @Value("${datasource.minIdle}")
  29. private int minIdle;
  30. @Value("${datasource.maxActive}")
  31. private int maxActive;
  32. @Value("${datasource.maxWait}")
  33. private int maxWait;
  34. @Value("${datasource.timeBetweenEvictionRunsMillis}")
  35. private int timeBetweenEvictionRunsMillis;
  36. @Value("${datasource.minEvictableIdleTimeMillis}")
  37. private int minEvictableIdleTimeMillis;
  38. @Value("${datasource.validationQuery}")
  39. private String validationQuery;
  40. @Value("${datasource.testWhileIdle}")
  41. private boolean testWhileIdle;
  42. @Value("${datasource.testOnBorrow}")
  43. private boolean testOnBorrow;
  44. @Value("${datasource.testOnReturn}")
  45. private boolean testOnReturn;
  46. @Value("${datasource.timeBetweenLogStatsMillis}")
  47. private int timeBetweenLogStatsMillis;
  48. @Value("${datasource.poolPreparedStatements}")
  49. private boolean poolPreparedStatements;
  50. @Value("${datasource.maxPoolPreparedStatementPerConnectionSize}")
  51. private int maxPoolPreparedStatementPerConnectionSize;
  52. @Value("${datasource.filters}")
  53. private String filters;
  54. @Value("${datasource.connectionProperties}")
  55. private String connectionProperties;
  56. @Bean
  57. @Primary
  58. public DataSource dataSource() {
  59. DruidDataSource dataSource = new DruidDataSource();
  60. dataSource.setUrl(url);
  61. dataSource.setUsername(username);
  62. dataSource.setPassword(password);
  63. dataSource.setDriverClassName(driverClassName);
  64. // configuration
  65. dataSource.setInitialSize(initialSize);
  66. dataSource.setMinIdle(minIdle);
  67. dataSource.setMaxActive(maxActive);
  68. dataSource.setMaxWait(maxWait);
  69. dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  70. dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  71. dataSource.setValidationQuery(validationQuery);
  72. dataSource.setTestWhileIdle(testWhileIdle);
  73. dataSource.setTestOnBorrow(testOnBorrow);
  74. dataSource.setTestOnReturn(testOnReturn);
  75. dataSource.setTimeBetweenLogStatsMillis(timeBetweenLogStatsMillis);
  76. dataSource.setPoolPreparedStatements(poolPreparedStatements);
  77. dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
  78. try {
  79. dataSource.setFilters(filters);
  80. } catch (SQLException e) {
  81. logger.error("数据源初始化失败: setFilters", e);
  82. }
  83. dataSource.setConnectionProperties(connectionProperties);
  84. return dataSource;
  85. }
  86. @Bean
  87. public ServletRegistrationBean servletRegistrationBean() {
  88. return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
  89. }
  90. @Bean
  91. public FilterRegistrationBean filterRegistrationBean() {
  92. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
  93. filterRegistrationBean.setFilter(new WebStatFilter());
  94. filterRegistrationBean.addUrlPatterns("/*");
  95. filterRegistrationBean.addInitParameter("exclusions",
  96. "*.js,*.gif,*.jpg,*.png,*.bmp,*.css,*.ico,*.html,/druid/*");
  97. return filterRegistrationBean;
  98. }
  99. }