|
|
@@ -0,0 +1,133 @@
|
|
|
+package com.uas.sso.sso.backend.config;
|
|
|
+
|
|
|
+import com.alibaba.druid.pool.DruidDataSource;
|
|
|
+import com.alibaba.druid.support.http.StatViewServlet;
|
|
|
+import com.alibaba.druid.support.http.WebStatFilter;
|
|
|
+import java.sql.SQLException;
|
|
|
+import javax.sql.DataSource;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+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.Configuration;
|
|
|
+import org.springframework.context.annotation.Primary;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Configurations for druid data source.
|
|
|
+ *
|
|
|
+ * @author huxz
|
|
|
+ */
|
|
|
+@Configuration
|
|
|
+@SuppressWarnings("Duplicates")
|
|
|
+public class DruidConfiguration {
|
|
|
+
|
|
|
+ private Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);
|
|
|
+
|
|
|
+ @Value("${app.datasource.url}")
|
|
|
+ private String url;
|
|
|
+
|
|
|
+ @Value("${app.datasource.username}")
|
|
|
+ private String username;
|
|
|
+
|
|
|
+ @Value("${app.datasource.password}")
|
|
|
+ private String password;
|
|
|
+
|
|
|
+ @Value("${app.datasource.driverClassName}")
|
|
|
+ private String driverClassName;
|
|
|
+
|
|
|
+ @Value("${app.datasource.initialSize}")
|
|
|
+ private int initialSize;
|
|
|
+
|
|
|
+ @Value("${app.datasource.minIdle}")
|
|
|
+ private int minIdle;
|
|
|
+
|
|
|
+ @Value("${app.datasource.maxActive}")
|
|
|
+ private int maxActive;
|
|
|
+
|
|
|
+ @Value("${app.datasource.maxWait}")
|
|
|
+ private int maxWait;
|
|
|
+
|
|
|
+ @Value("${app.datasource.timeBetweenEvictionRunsMillis}")
|
|
|
+ private int timeBetweenEvictionRunsMillis;
|
|
|
+
|
|
|
+ @Value("${app.datasource.minEvictableIdleTimeMillis}")
|
|
|
+ private int minEvictableIdleTimeMillis;
|
|
|
+
|
|
|
+ @Value("${app.datasource.validationQuery}")
|
|
|
+ private String validationQuery;
|
|
|
+
|
|
|
+ @Value("${app.datasource.testWhileIdle}")
|
|
|
+ private boolean testWhileIdle;
|
|
|
+
|
|
|
+ @Value("${app.datasource.testOnBorrow}")
|
|
|
+ private boolean testOnBorrow;
|
|
|
+
|
|
|
+ @Value("${app.datasource.testOnReturn}")
|
|
|
+ private boolean testOnReturn;
|
|
|
+
|
|
|
+ @Value("${app.datasource.timeBetweenLogStatsMillis}")
|
|
|
+ private int timeBetweenLogStatsMillis;
|
|
|
+
|
|
|
+ @Value("${app.datasource.poolPreparedStatements}")
|
|
|
+ private boolean poolPreparedStatements;
|
|
|
+
|
|
|
+ @Value("${app.datasource.maxPoolPreparedStatementPerConnectionSize}")
|
|
|
+ private int maxPoolPreparedStatementPerConnectionSize;
|
|
|
+
|
|
|
+ @Value("${app.datasource.filters}")
|
|
|
+ private String filters;
|
|
|
+
|
|
|
+ @Value("${app.datasource.connectionProperties}")
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|