300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > springboot 使用Druid数据库连接池

springboot 使用Druid数据库连接池

时间:2022-06-15 03:06:18

相关推荐

springboot  使用Druid数据库连接池

Druid 阿里开源的数据库连接池

选择的理由:

Druid 经历了阿里双十一的场景,足以可见其性能。Druid 有完整的监控,可以实时监控数据库状态及sql的执行时间。提供有丰富的监控器,自定义监控器也很方便。

springboot 默认的连接池是HikariCP,使用Druid :

引入jar 包。

<!--数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>

在application.properties 里配置相关属性:

#连接池配置#<!-- 配置初始化大小、最小、最大 -->spring.datasource.druid.initial-size=5spring.datasource.druid.min-idle=10spring.datasource.druid.max-active=20#<!-- 配置获取连接等待超时的时间 60秒-->spring.datasource.druid.max-wait=60000#<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->spring.datasource.druid.time-between-eviction-runs-millis=60000#<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->spring.datasource.druid.min-evictable-idle-time-millis=60000#spring.datasource.druid.max-evictable-idle-time-millis=90000#是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。spring.datasource.druid.max-open-prepared-statements= -1#检测连接是否有效的语句,及超时时间spring.datasource.druid.validation-query=SELECT 1spring.datasource.druid.validation-query-timeout=30#申请连接是否检测,归还连接是否检测 ,空闲是否检测spring.datasource.druid.test-on-borrow=falsespring.datasource.druid.test-on-return=falsespring.datasource.druid.test-while-idle=true#druid 日志输出spring.datasource.druid.filter.slf4j.enabled=true spring.datasource.druid.filter.slf4j.statement-create-after-log-enabled=false spring.datasource.druid.filter.slf4j.statement-close-after-log-enabled=false spring.datasource.druid.filter.slf4j.result-set-open-after-log-enabled=false spring.datasource.druid.filter.slf4j.result-set-close-after-log-enabled=false#插件配置 监控统计用的filter:stat#日志用的filter:log4j#防御sql注入的filter:wallspring.datasource.druid.filters=stat,wall# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter#sql 合并,慢sql展示监控 超过20秒为慢sqlspring.datasource.druid.filter.stat.merge-sql=true spring.datasource.druid.filter.stat.log-slow-sql=truespring.datasource.druid.filter.stat.slow-sql-millis=20000spring.datasource.druid.web-stat-filter.enabled= truespring.datasource.druid.web-stat-filter.url-pattern=/*spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*spring.datasource.druid.web-stat-filter.session-stat-enable=truespring.datasource.druid.web-stat-filter.session-stat-max-count=10#spring.datasource.druid.web-stat-filter.principal-session-name=admin#spring.datasource.druid.web-stat-filter.principal-cookie-name=admin#spring.datasource.druid.web-stat-filter.profile-enable=true# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置spring.datasource.druid.stat-view-servlet.enabled= truespring.datasource.druid.stat-view-servlet.url-pattern=/druid/*spring.datasource.druid.stat-view-servlet.reset-enable=falsespring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=admin#Ip白名单 黑名单 黑名单优先,黑名单中存在就不可访问。#spring.datasource.druid.stat-view-servlet.allow=#spring.datasource.druid.stat-view-servlet.deny=# AOP 监控拦截切入点spring.datasource.druid.aop-patterns=com.example.demo.mapper.*,com.example.demo.service.*,com.example.demo.web.*

启动项目进行访问。可以看到执行 的sql的详细信息。

这里输出的数据库日志采用logback,详细配置如下:

<!-- druid 数据库连接池日志输出--><appender name="druidSqlRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender" ><encoder><pattern>[%d{yyyy-MM-dd HH:mm:ss}] %-5level %L %M - %msg%xEx%n</pattern></encoder><file>${ROOT_LOG_DIR}/druid-sql.log</file><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>TRACE</level></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${ROOT_LOGBAK_DIR}/%d{yyyy-MM-dd}/api-%d{yyyy-MM-dd}.%i.txt</fileNamePattern><!-- 单个日志文件最多 100MB, 100天的日志周期,最大不能超过1000GB --><maxFileSize>100MB</maxFileSize><maxHistory>100</maxHistory><maxHistory>100GB</maxHistory></rollingPolicy></appender><!--记录druid-sql的记录--><logger name="druid.sql.Statement" level="debug" additivity="false"><appender-ref ref="druidSqlRollingFile"/></logger>

可以看到日志输出:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。