DruidDBConfiguration.java 4.6 KB

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