|
|
@@ -0,0 +1,261 @@
|
|
|
+package com.uas.reservation;
|
|
|
+
|
|
|
+import com.alibaba.druid.pool.DruidDataSource;
|
|
|
+import com.alibaba.druid.support.http.StatViewServlet;
|
|
|
+import com.alibaba.druid.support.http.WebStatFilter;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
|
|
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Primary;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import javax.sql.DataSource;
|
|
|
+import java.sql.SQLException;
|
|
|
+
|
|
|
+@Component
|
|
|
+@ConfigurationProperties(prefix = "datasource")
|
|
|
+public class DruidDBConfiguration {
|
|
|
+
|
|
|
+ private Logger logger = LoggerFactory.getLogger(DruidDBConfiguration.class);
|
|
|
+
|
|
|
+ private String url;
|
|
|
+
|
|
|
+ private String username;
|
|
|
+
|
|
|
+ private String password;
|
|
|
+
|
|
|
+ private String driverClassName;
|
|
|
+
|
|
|
+ private int initialSize;
|
|
|
+
|
|
|
+ private int minIdle;
|
|
|
+
|
|
|
+ private int maxActive;
|
|
|
+
|
|
|
+ private int maxWait;
|
|
|
+
|
|
|
+ private int timeBetweenEvictionRunsMillis;
|
|
|
+
|
|
|
+ private int minEvictableIdleTimeMillis;
|
|
|
+
|
|
|
+ private String validationQuery;
|
|
|
+
|
|
|
+ private boolean testWhileIdle;
|
|
|
+
|
|
|
+ private boolean testOnBorrow;
|
|
|
+
|
|
|
+ private boolean testOnReturn;
|
|
|
+
|
|
|
+ private int timeBetweenLogStatsMillis;
|
|
|
+
|
|
|
+ private boolean poolPreparedStatements;
|
|
|
+
|
|
|
+ private int maxPoolPreparedStatementPerConnectionSize;
|
|
|
+
|
|
|
+ private String filters;
|
|
|
+
|
|
|
+ private String connectionProperties;
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ @Primary
|
|
|
+ public DataSource dataSource() {
|
|
|
+ DruidDataSource dataSource = new DruidDataSource();
|
|
|
+
|
|
|
+ dataSource.setUrl(url);
|
|
|
+ dataSource.setUsername(username);
|
|
|
+ dataSource.setPassword(password);
|
|
|
+ dataSource.setDriverClassName(driverClassName);
|
|
|
+
|
|
|
+ // configuration
|
|
|
+ dataSource.setInitialSize(initialSize);
|
|
|
+ dataSource.setMinIdle(minIdle);
|
|
|
+ dataSource.setMaxActive(maxActive);
|
|
|
+ dataSource.setMaxWait(maxWait);
|
|
|
+ dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
|
|
|
+ dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
|
|
|
+ dataSource.setValidationQuery(validationQuery);
|
|
|
+ dataSource.setTestWhileIdle(testWhileIdle);
|
|
|
+ dataSource.setTestOnBorrow(testOnBorrow);
|
|
|
+ dataSource.setTestOnReturn(testOnReturn);
|
|
|
+ dataSource.setTimeBetweenLogStatsMillis(timeBetweenLogStatsMillis);
|
|
|
+ dataSource.setPoolPreparedStatements(poolPreparedStatements);
|
|
|
+ dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
|
|
|
+ try {
|
|
|
+ dataSource.setFilters(filters);
|
|
|
+ } catch (SQLException e) {
|
|
|
+ logger.error("数据源初始化失败: setFilters", e);
|
|
|
+ }
|
|
|
+ dataSource.setConnectionProperties(connectionProperties);
|
|
|
+ return dataSource;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public ServletRegistrationBean servletRegistrationBean() {
|
|
|
+ return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public FilterRegistrationBean filterRegistrationBean() {
|
|
|
+ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
|
|
|
+ filterRegistrationBean.setFilter(new WebStatFilter());
|
|
|
+ filterRegistrationBean.addUrlPatterns("/*");
|
|
|
+ filterRegistrationBean.addInitParameter("exclusions",
|
|
|
+ "*.js,*.gif,*.jpg,*.png,*.bmp,*.css,*.ico,*.html,/druid/*");
|
|
|
+ return filterRegistrationBean;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getUrl() {
|
|
|
+ return url;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setUrl(String url) {
|
|
|
+ this.url = url;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getUsername() {
|
|
|
+ return username;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setUsername(String username) {
|
|
|
+ this.username = username;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPassword() {
|
|
|
+ return password;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPassword(String password) {
|
|
|
+ this.password = password;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getDriverClassName() {
|
|
|
+ return driverClassName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setDriverClassName(String driverClassName) {
|
|
|
+ this.driverClassName = driverClassName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getInitialSize() {
|
|
|
+ return initialSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setInitialSize(int initialSize) {
|
|
|
+ this.initialSize = initialSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getMinIdle() {
|
|
|
+ return minIdle;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMinIdle(int minIdle) {
|
|
|
+ this.minIdle = minIdle;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getMaxActive() {
|
|
|
+ return maxActive;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMaxActive(int maxActive) {
|
|
|
+ this.maxActive = maxActive;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getMaxWait() {
|
|
|
+ return maxWait;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMaxWait(int maxWait) {
|
|
|
+ this.maxWait = maxWait;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getTimeBetweenEvictionRunsMillis() {
|
|
|
+ return timeBetweenEvictionRunsMillis;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
|
|
|
+ this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getMinEvictableIdleTimeMillis() {
|
|
|
+ return minEvictableIdleTimeMillis;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
|
|
|
+ this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getValidationQuery() {
|
|
|
+ return validationQuery;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setValidationQuery(String validationQuery) {
|
|
|
+ this.validationQuery = validationQuery;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isTestWhileIdle() {
|
|
|
+ return testWhileIdle;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTestWhileIdle(boolean testWhileIdle) {
|
|
|
+ this.testWhileIdle = testWhileIdle;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isTestOnBorrow() {
|
|
|
+ return testOnBorrow;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTestOnBorrow(boolean testOnBorrow) {
|
|
|
+ this.testOnBorrow = testOnBorrow;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isTestOnReturn() {
|
|
|
+ return testOnReturn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTestOnReturn(boolean testOnReturn) {
|
|
|
+ this.testOnReturn = testOnReturn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getTimeBetweenLogStatsMillis() {
|
|
|
+ return timeBetweenLogStatsMillis;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTimeBetweenLogStatsMillis(int timeBetweenLogStatsMillis) {
|
|
|
+ this.timeBetweenLogStatsMillis = timeBetweenLogStatsMillis;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isPoolPreparedStatements() {
|
|
|
+ return poolPreparedStatements;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPoolPreparedStatements(boolean poolPreparedStatements) {
|
|
|
+ this.poolPreparedStatements = poolPreparedStatements;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getMaxPoolPreparedStatementPerConnectionSize() {
|
|
|
+ return maxPoolPreparedStatementPerConnectionSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {
|
|
|
+ this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getFilters() {
|
|
|
+ return filters;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setFilters(String filters) {
|
|
|
+ this.filters = filters;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getConnectionProperties() {
|
|
|
+ return connectionProperties;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setConnectionProperties(String connectionProperties) {
|
|
|
+ this.connectionProperties = connectionProperties;
|
|
|
+ }
|
|
|
+}
|