DruidConfig.kt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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 com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean
  6. import com.baomidou.mybatisplus.spring.boot.starter.SpringBootVFS
  7. import org.mybatis.spring.annotation.MapperScan
  8. import org.slf4j.LoggerFactory
  9. import org.springframework.beans.factory.annotation.Autowired
  10. import org.springframework.boot.context.properties.ConfigurationProperties
  11. import org.springframework.boot.web.servlet.FilterRegistrationBean
  12. import org.springframework.boot.web.servlet.ServletRegistrationBean
  13. import org.springframework.context.annotation.Bean
  14. import org.springframework.context.annotation.Configuration
  15. import org.springframework.core.annotation.Order
  16. import org.springframework.core.io.support.PathMatchingResourcePatternResolver
  17. import java.sql.SQLException
  18. import javax.sql.DataSource
  19. //@Order(1)
  20. @Configuration
  21. @ConfigurationProperties(prefix = "druid.datasource-sys")
  22. @MapperScan(basePackages = ["com.gxzc.zen.sys"])
  23. class SysDruidConfig:DruidConfig()
  24. //@Order(2)
  25. //@Configuration
  26. //@ConfigurationProperties(prefix = "mybatis-plus")
  27. //@MapperScan(basePackages = ["com.gxzc.zen"])
  28. //class SysMyBatisPlusConfig:MyBatisPlusConfig<SysDruidConfig>()
  29. /*-----------------druid数据源bean注册 */
  30. open class DruidConfig {
  31. var url:String?=null
  32. var username:String?=null
  33. var password:String?=null
  34. var filters:String?=null
  35. var driverClassName:String?="com.mysql.jdbc.Driver"
  36. var initialSize:Int?=5
  37. var minIdle:Int?=5
  38. var maxActive:Int?=20
  39. var maxWait:Long?=60000
  40. var timeBetweenEvictionRunsMillis:Long?=null
  41. var minEvictableIdleTimeMillis:Long?=null
  42. var validationQuery:String?=null
  43. var testWhileIdle:Boolean?=null
  44. var testOnBorrow:Boolean?=null
  45. var testOnReturn:Boolean?=null
  46. private val logger= LoggerFactory.getLogger(javaClass)
  47. private var datasource:DruidDataSource?=null
  48. // private val name=nm
  49. @Bean
  50. open fun druidDataSource(): DataSource {
  51. datasource = DruidDataSource()
  52. datasource?.url = url
  53. datasource?.username = username
  54. datasource?.password = password
  55. datasource?.driverClassName = driverClassName
  56. datasource?.initialSize = initialSize!!
  57. datasource?.minIdle = minIdle!!
  58. datasource?.maxActive = maxActive!!
  59. datasource?.maxWait = maxWait!!
  60. datasource?.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis!!
  61. datasource?.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis!!
  62. datasource?.validationQuery = validationQuery!!
  63. datasource?.isTestWhileIdle = testWhileIdle!!
  64. datasource?.isTestOnBorrow = testOnBorrow!!
  65. datasource?.isTestOnReturn = testOnReturn!!
  66. try {
  67. datasource?.setFilters(filters)
  68. } catch (e: SQLException) {
  69. logger.error("druid configuration initialization filter", e)
  70. }
  71. return datasource!!
  72. }
  73. fun getDatasource():DruidDataSource{
  74. return datasource!!
  75. }
  76. }
  77. open class MyBatisPlusConfig<T:DruidConfig>{
  78. var mapperLocations:String?=null
  79. var typeAliasesPackage:String?=null
  80. var globalConfigs:Map<String,Any>?=null
  81. var configurations:Map<String,Any>?=null
  82. @Autowired
  83. private val datasource:T?=null
  84. private val resolver=PathMatchingResourcePatternResolver()
  85. private var sqlSessionFactory:MybatisSqlSessionFactoryBean?=null
  86. /**
  87. * 这里全部使用mybatis-autoconfigure 已经自动加载的资源。不手动指定
  88. * 配置文件和mybatis-boot的配置文件同步
  89. * @return
  90. */
  91. @Bean
  92. open fun mybatisSqlSessionFactoryBean(): MybatisSqlSessionFactoryBean {
  93. sqlSessionFactory = MybatisSqlSessionFactoryBean()
  94. sqlSessionFactory?.setDataSource(datasource?.getDatasource())
  95. sqlSessionFactory?.vfs = SpringBootVFS::class.java
  96. sqlSessionFactory?.setTypeAliasesPackage(typeAliasesPackage)
  97. val resources = resolver.getResources(mapperLocations)
  98. sqlSessionFactory?.setMapperLocations(resources)
  99. val conftion= org.apache.ibatis.session.Configuration()
  100. conftion.isMapUnderscoreToCamelCase=configurations?.get("map-underscore-to-camel-case") as Boolean
  101. conftion.isCacheEnabled=configurations?.get("cache-enabled") as Boolean
  102. conftion.isLazyLoadingEnabled=configurations?.get("lazyLoadingEnabled") as Boolean
  103. conftion.isMultipleResultSetsEnabled=configurations?.get("multipleResultSetsEnabled") as Boolean
  104. sqlSessionFactory?.setConfiguration(conftion)
  105. return sqlSessionFactory!!
  106. }
  107. }
  108. /*-----------------配置druid显示界面 */
  109. @Configuration
  110. @ConfigurationProperties(prefix = "druid.view")
  111. class DruidViewConfig{
  112. var username:String?=null
  113. var password:String?=null
  114. var slowsql:String?=null
  115. @Bean
  116. fun druidServlet(): ServletRegistrationBean {
  117. // if(!enable!!)return throw Exception()
  118. val reg = ServletRegistrationBean()
  119. reg.setServlet(StatViewServlet())
  120. reg.addUrlMappings("/druid/*")
  121. reg.addInitParameter("loginUsername", username)
  122. reg.addInitParameter("loginPassword", password)
  123. reg.addInitParameter("logSlowSql", slowsql)
  124. return reg
  125. }
  126. @Bean
  127. fun filterRegistrationBean(): FilterRegistrationBean {
  128. // if(!enable!!)return throw Exception()
  129. val filterRegistrationBean = FilterRegistrationBean()
  130. filterRegistrationBean.filter = WebStatFilter()
  131. filterRegistrationBean.addUrlPatterns("/*")
  132. filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*")
  133. filterRegistrationBean.addInitParameter("profileEnable", "true")
  134. return filterRegistrationBean
  135. }
  136. }