DruidConfig.kt 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.gxzc.zen.config
  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.LoggerFactory
  6. import org.springframework.beans.factory.annotation.Autowired
  7. import org.springframework.boot.web.servlet.FilterRegistrationBean
  8. import org.springframework.boot.web.servlet.ServletRegistrationBean
  9. import org.springframework.context.annotation.Bean
  10. import org.springframework.context.annotation.Configuration
  11. import java.sql.SQLException
  12. import javax.sql.DataSource
  13. @Configuration
  14. class SysDruidConfig:DruidConfig<SysDruidProperties>()
  15. /*-----------------druid数据源bean注册 */
  16. open class DruidConfig<T:DruidProperties> {
  17. private val logger= LoggerFactory.getLogger(javaClass)
  18. @Autowired
  19. private val config:T?=null
  20. // private val name=nm
  21. @Bean
  22. open fun druidDataSource(): DataSource {
  23. val datasource = DruidDataSource()
  24. datasource.url = config?.url
  25. datasource.username = config?.username
  26. datasource.password = config?.password
  27. datasource.driverClassName = config?.driverClassName
  28. datasource.initialSize = config?.initialSize!!
  29. datasource.minIdle = config?.minIdle!!
  30. datasource.maxActive = config?.maxActive!!
  31. datasource.maxWait = config?.maxWait!!
  32. datasource.timeBetweenEvictionRunsMillis = config?.timeBetweenEvictionRunsMillis!!
  33. datasource.minEvictableIdleTimeMillis = config?.minEvictableIdleTimeMillis!!
  34. datasource.validationQuery = config?.validationQuery!!
  35. datasource.isTestWhileIdle = config?.testWhileIdle!!
  36. datasource.isTestOnBorrow = config?.testOnBorrow!!
  37. datasource.isTestOnReturn = config?.testOnReturn!!
  38. try {
  39. datasource.setFilters(config?.filters)
  40. } catch (e: SQLException) {
  41. logger.error("druid configuration initialization filter", e)
  42. }
  43. return datasource
  44. }
  45. }
  46. /*-----------------配置druid显示界面 */
  47. @Configuration
  48. class DruidViewConfig{
  49. @Autowired
  50. private val config:DruidViewProperties?=null
  51. @Bean
  52. fun druidServlet(): ServletRegistrationBean {
  53. // if(!config?.enable!!)return throw Exception()
  54. val reg = ServletRegistrationBean()
  55. reg.setServlet(StatViewServlet())
  56. reg.addUrlMappings("/druid/*")
  57. reg.addInitParameter("loginUsername", config?.username)
  58. reg.addInitParameter("loginPassword", config?.password)
  59. reg.addInitParameter("logSlowSql", config?.slowsql)
  60. return reg
  61. }
  62. @Bean
  63. fun filterRegistrationBean(): FilterRegistrationBean {
  64. // if(!config?.enable!!)return throw Exception()
  65. val filterRegistrationBean = FilterRegistrationBean()
  66. filterRegistrationBean.filter = WebStatFilter()
  67. filterRegistrationBean.addUrlPatterns("/*")
  68. filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*")
  69. filterRegistrationBean.addInitParameter("profileEnable", "true")
  70. return filterRegistrationBean
  71. }
  72. }