赞
踩
为什么要使用数据库连接池
不使用数据库连接池: 对于并发量大的网站,会导致以下问题:
使用数据库连接池:
加入Druid的依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
Druid必须的配置其实很少,只需配置一行,表明不使用默认的Hikari。参数调优部分是可选的,这里列出的参数都是druid官网推荐的典型配置。
# druid配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # druid参数调优(可选) # 初始化大小,最小,最大 spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 # 配置获取连接等待超时的时间 spring.datasource.druid.max-wait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.druid.time-between-eviction-runs-millis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.druid.min-evictable-idle-time-millis=300000 # 测试连接 spring.datasource.druid.validation-query=select 'x' spring.datasource.druid.test-while-idle=true spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false # 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 # 配置监控统计拦截的filters spring.datasource.druid.filters=stat # asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间 spring.datasource.druid.async-init=true
Druid的监控配置可以通过在配置文件中通过配置方式,也可以通过创建配置类(DruidConfiguration)的方式,下面的例子是使用配置文件方式。
# 进行Druid的监控配置 # Druid内置提供一个StatFilter,用于统计监控信息(https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter) # 启用StatFilter spring.datasource.druid.web-stat-filter.enabled=true # StatFilter过滤匹配 spring.datasource.druid.web-stat-filter.url-pattern=/* spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/* # 缺省sessionStatMaxCount是1000个。你可以按需要进行配置 spring.datasource.druid.web-stat-filter.session-stat-max-count=1000 # 关闭session统计功能 spring.datasource.druid.web-stat-filter.session-stat-enable=true # 配置profileEnable能够监控单个url调用的sql列表 spring.datasource.druid.web-stat-filter.profile-enable=true # StatViewServlet配置,内置监控页面配置 spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* # 禁用HTML页面上的“Reset All”功能 spring.datasource.druid.stat-view-servlet.reset-enable=true # 监控页面用户名和密码 spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin # IP白名单 (没有配置或者为空,则允许所有访问) spring.datasource.druid.stat-view-servlet.allow=127.0.0.1 # IP黑名单 (存在共同时,deny优先于allow) spring.datasource.druid.stat-view-servlet.deny=192.168.10.1 ## Spring监控配置 # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔 spring.datasource.druid.aop-patterns=com.gavinbj.confmng.service.* # 配置wall filter,详细参考:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter spring.datasource.druid.filter.wall.enabled=true # 数据库指定为MySQL spring.datasource.druid.filter.wall.db-type=mysql # 是否允许执行Alter Table语句 spring.datasource.druid.filter.wall.config.alter-table-allow=false # truncate语句是危险,缺省打开,若需要自行关闭 spring.datasource.druid.filter.wall.config.truncate-allow=false # 是否循序执行删除表语句 spring.datasource.druid.filter.wall.config.drop-table-allow=false # 是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL spring.datasource.druid.filter.wall.config.none-base-statement-allow=false # 检查UPDATE语句的WHERE子句是否是一个永真条件 spring.datasource.druid.filter.wall.config.update-where-none-check=true # 是否允许调用Connection.getMetadata方法,这个方法调用会暴露数据库的表信息 spring.datasource.druid.filter.wall.config.metadata-allow=true # 对被认为是攻击的SQL进行LOG.error输出 spring.datasource.druid.filter.wall.log-violation=true # 对被认为是攻击的SQL抛出SQLExcepton spring.datasource.druid.filter.wall.throw-exception=true
通过如上配置,即完成了Druid的整合,同时开启了Druid的监控中心。我们接下来验证一下:
启动工程,访问:http://localhost:9002/gavin/api/user/users/gavin
返回结果:
{
"status": 0,
"code": 1003,
"msg": "处理成功!",
"data": {
"userId": "gavin",
"userName": "盖文",
"introduce": "大学教授",
"mobilephone": "13940981276",
"email": "gavin@qq.com",
"birthday": "2019-10-07T00:00:00.000+0000",
"gender": "男"
}
}
打开Druid的监控页面:http://localhost:9002/gavin/druid/login.html
注意:账号:admin , 密码:admin 账号密码可以在application.properties 中修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。