栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库线程池Druid

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库线程池Druid

4. 数据库连接池Druid

Druid 是alibaba开源数据库连接池。

开源地址 https://github.com/alibaba/druid

1. 添加依赖

在pom.xml中添加依赖:

com.alibaba

druid-spring-boot-starter

1.2.9

2. 数据源配置:

在 application.properties 中配置Druid:

#=======Druid数据源配置

#数据源类型

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

#数据库连接驱动 账号 密码 url

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/base_admin?

useUnicode=true&characterEncoding=UTF-

8&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true

#== Druid连接池配置

#初始化连接池大小

spring.datasource.druid.initial-size=10

#最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请

spring.datasource.druid.min-idle=1

#最大活跃数

spring.datasource.druid.max-active=50

#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制

spring.datasource.druid.max-wait=60000

#失效检查线程运行时间间隔,要小于MySQL默认

spring.datasource.druid.time-between-eviction-runs-millis=60000

#连接的超时时间,默认为半小时

spring.datasource.druid.min-evictable-idle-time-millis=300000

#检查连接有效性的SQL语句

spring.datasource.druid.validation-query=SELECt 1 FROM dual

#检查连接是否有效

spring.datasource.druid.test-while-idle=true

#当应用向连接池申请连接时,连接池会判断这条连接是否是可用的。

spring.datasource.druid.test-on-borrow=true

#当应用使用完连接,连接池回收连接的时候会判断该连接是否还可用。

spring.datasource.druid.test-on-return=true

#开启池的prepared statement 池功能 是否池化statements.

spring.datasource.druid.pool-prepared-statements=false

#statement池能够同时分配的打开的statements的最大数量

spring.datasource.druid.max-open-prepared-statements=50

#==开启StatFilter 用于统计监控信息

spring.datasource.druid.filter.stat.enabled=true

spring.datasource.druid.filter.stat.log-slow-sql=true

spring.datasource.druid.filter.stat.slow-sql-millis=1000

#==开启WallFilter WallFilter的功能是防御SQL注入攻击。它是基于SQL语法分析,理解其中的SQL语

义,然后做处理的,智能,准确,误报率低。

spring.datasource.druid.filter.wall.enabled=true

#对被认为是攻击的SQL进行LOG.error输出 开启

spring.datasource.druid.filter.wall.log-violation=true

#对被认为是攻击的SQL抛出SQLException 关闭

spring.datasource.druid.filter.wall.throw-exception=false

#检查DELETE语句是否无where条件,这是有风险的,但不是SQL注入类型的风险

spring.datasource.druid.filter.wall.config.delete-where-none-check=true

#==开启Web监控

spring.datasource.druid.web-stat-filter.enabled=true

#排除一些不必要的url,比如.js,/jslib/等等

spring.datasource.druid.web-stat-

filter.exclusions=/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico

spring.datasource.druid.web-stat-filter.url-pattern=/*

#===开启监控页面

spring.datasource.druid.stat-view-servlet.enabled=true

spring.datasource.druid.stat-view-servlet.login-username=admin

spring.datasource.druid.stat-view-servlet.login-password=admin

这里如果使用YAML 写会简单一些

  1. 启动运行测试类

 

注意在没有引入依赖前,数据库连接池默认是HikariPool

4. 查看监控

启动web应用,查看druid监控界面

http://localhost:8080/druid/login.html

 

 

5. 数据库事务

5.1. @Transactional

service中使用注解,其实controller中也可以使用,一般写在service中

@Transactional 注解在类上或者方法上

5.2. 事务失效情况

@Transactional 应用在非 public 修饰的方法上

@Transactional 注解属性 propagation 设置错误(事务传播属性设置错误)

@Transactional 注解属性 rollbackFor 设置错误

同一个类中方法调用,导致@Transactional失效

异常被你catch捕获了

数据库(或数据库引擎)不支持事务

新开启一个线程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号