123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- 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 com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean
- import com.baomidou.mybatisplus.spring.boot.starter.SpringBootVFS
- import org.mybatis.spring.annotation.MapperScan
- import org.slf4j.LoggerFactory
- import org.springframework.beans.factory.annotation.Autowired
- 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.Configuration
- import org.springframework.core.annotation.Order
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver
- import java.sql.SQLException
- import javax.sql.DataSource
- //@Order(1)
- @Configuration
- @ConfigurationProperties(prefix = "druid.datasource-sys")
- @MapperScan(basePackages = ["com.gxzc.zen.sys"])
- class SysDruidConfig:DruidConfig()
- //@Order(2)
- //@Configuration
- //@ConfigurationProperties(prefix = "mybatis-plus")
- //@MapperScan(basePackages = ["com.gxzc.zen"])
- //class SysMyBatisPlusConfig:MyBatisPlusConfig<SysDruidConfig>()
- /*-----------------druid数据源bean注册 */
- open class DruidConfig {
- var url:String?=null
- var username:String?=null
- var password:String?=null
- var filters:String?=null
- var driverClassName:String?="com.mysql.jdbc.Driver"
- var initialSize:Int?=5
- var minIdle:Int?=5
- var maxActive:Int?=20
- var maxWait:Long?=60000
- var timeBetweenEvictionRunsMillis:Long?=null
- var minEvictableIdleTimeMillis:Long?=null
- var validationQuery:String?=null
- var testWhileIdle:Boolean?=null
- var testOnBorrow:Boolean?=null
- var testOnReturn:Boolean?=null
- private val logger= LoggerFactory.getLogger(javaClass)
- private var datasource:DruidDataSource?=null
- // private val name=nm
- @Bean
- open fun druidDataSource(): DataSource {
- datasource = DruidDataSource()
- datasource?.url = url
- datasource?.username = username
- datasource?.password = password
- datasource?.driverClassName = driverClassName
- datasource?.initialSize = initialSize!!
- datasource?.minIdle = minIdle!!
- datasource?.maxActive = maxActive!!
- datasource?.maxWait = maxWait!!
- datasource?.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis!!
- datasource?.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis!!
- datasource?.validationQuery = validationQuery!!
- datasource?.isTestWhileIdle = testWhileIdle!!
- datasource?.isTestOnBorrow = testOnBorrow!!
- datasource?.isTestOnReturn = testOnReturn!!
- try {
- datasource?.setFilters(filters)
- } catch (e: SQLException) {
- logger.error("druid configuration initialization filter", e)
- }
- return datasource!!
- }
- fun getDatasource():DruidDataSource{
- return datasource!!
- }
- }
- open class MyBatisPlusConfig<T:DruidConfig>{
- var mapperLocations:String?=null
- var typeAliasesPackage:String?=null
- var globalConfigs:Map<String,Any>?=null
- var configurations:Map<String,Any>?=null
- @Autowired
- private val datasource:T?=null
- private val resolver=PathMatchingResourcePatternResolver()
- private var sqlSessionFactory:MybatisSqlSessionFactoryBean?=null
- /**
- * 这里全部使用mybatis-autoconfigure 已经自动加载的资源。不手动指定
- * 配置文件和mybatis-boot的配置文件同步
- * @return
- */
- @Bean
- open fun mybatisSqlSessionFactoryBean(): MybatisSqlSessionFactoryBean {
- sqlSessionFactory = MybatisSqlSessionFactoryBean()
- sqlSessionFactory?.setDataSource(datasource?.getDatasource())
- sqlSessionFactory?.vfs = SpringBootVFS::class.java
- sqlSessionFactory?.setTypeAliasesPackage(typeAliasesPackage)
- val resources = resolver.getResources(mapperLocations)
- sqlSessionFactory?.setMapperLocations(resources)
- val conftion= org.apache.ibatis.session.Configuration()
- conftion.isMapUnderscoreToCamelCase=configurations?.get("map-underscore-to-camel-case") as Boolean
- conftion.isCacheEnabled=configurations?.get("cache-enabled") as Boolean
- conftion.isLazyLoadingEnabled=configurations?.get("lazyLoadingEnabled") as Boolean
- conftion.isMultipleResultSetsEnabled=configurations?.get("multipleResultSetsEnabled") as Boolean
- sqlSessionFactory?.setConfiguration(conftion)
- return sqlSessionFactory!!
- }
- }
- /*-----------------配置druid显示界面 */
- @Configuration
- @ConfigurationProperties(prefix = "druid.view")
- class DruidViewConfig{
- var username:String?=null
- var password:String?=null
- var slowsql:String?=null
- @Bean
- fun druidServlet(): ServletRegistrationBean {
- // if(!enable!!)return throw Exception()
- val reg = ServletRegistrationBean()
- reg.setServlet(StatViewServlet())
- reg.addUrlMappings("/druid/*")
- reg.addInitParameter("loginUsername", username)
- reg.addInitParameter("loginPassword", password)
- reg.addInitParameter("logSlowSql", slowsql)
- return reg
- }
- @Bean
- fun filterRegistrationBean(): FilterRegistrationBean {
- // if(!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
- }
- }
|