package com.gxzc.zen.config import com.alibaba.druid.pool.DruidDataSource import com.alibaba.druid.support.http.StatViewServlet import com.alibaba.druid.support.http.WebStatFilter import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired 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 java.sql.SQLException import javax.sql.DataSource @Configuration class SysDruidConfig:DruidConfig() /*-----------------druid数据源bean注册 */ open class DruidConfig { private val logger= LoggerFactory.getLogger(javaClass) @Autowired private val config:T?=null // private val name=nm @Bean open fun druidDataSource(): DataSource { val datasource = DruidDataSource() datasource.url = config?.url datasource.username = config?.username datasource.password = config?.password datasource.driverClassName = config?.driverClassName datasource.initialSize = config?.initialSize!! datasource.minIdle = config?.minIdle!! datasource.maxActive = config?.maxActive!! datasource.maxWait = config?.maxWait!! datasource.timeBetweenEvictionRunsMillis = config?.timeBetweenEvictionRunsMillis!! datasource.minEvictableIdleTimeMillis = config?.minEvictableIdleTimeMillis!! datasource.validationQuery = config?.validationQuery!! datasource.isTestWhileIdle = config?.testWhileIdle!! datasource.isTestOnBorrow = config?.testOnBorrow!! datasource.isTestOnReturn = config?.testOnReturn!! try { datasource.setFilters(config?.filters) } catch (e: SQLException) { logger.error("druid configuration initialization filter", e) } return datasource } } /*-----------------配置druid显示界面 */ @Configuration class DruidViewConfig{ @Autowired private val config:DruidViewProperties?=null @Bean fun druidServlet(): ServletRegistrationBean { // if(!config?.enable!!)return throw Exception() val reg = ServletRegistrationBean() reg.setServlet(StatViewServlet()) reg.addUrlMappings("/druid/*") reg.addInitParameter("loginUsername", config?.username) reg.addInitParameter("loginPassword", config?.password) reg.addInitParameter("logSlowSql", config?.slowsql) return reg } @Bean fun filterRegistrationBean(): FilterRegistrationBean { // if(!config?.enable!!)return throw Exception() val filterRegistrationBean = FilterRegistrationBean() filterRegistrationBean.filter = WebStatFilter() filterRegistrationBean.addUrlPatterns("/*") filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*") filterRegistrationBean.addInitParameter("profileEnable", "true") return filterRegistrationBean } }