spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池

        Druid是Java语言中最好的数据库连接池,这话不是我说的,是Druid官方文档自己这样描述的,这是何等的自信!

        连接池的作用,跟线程池的作用大同小异,都是为了减少频繁的创建销毁连接IO,提升性能。druid 作为阿里旗下的一个开源产品,经过阿里千万级别的压测跟测试,对于绝大部分的公司来说都是可以满足的。而且这个连接池跟其他连接池对比,也是一枝独秀。

2f2d464f6ca408ad70f07935916e24a4.png

选择druid作为首选连接池的原因:

1、理论上说,支持所有有jdbc驱动的数据库。实际测试过的有

数据库支持状态
mysql支持,大规模使用
oracle支持,大规模使用
sqlserver支持
postgres支持
db2支持
h2支持
derby支持
sqlite支持

2、跟springboot 完美整合,从最简单的功能上看,只需要添加一个starter依赖即可使用

    <dependency>      <groupId>com.alibabagroupId>      <artifactId>druid-spring-boot-starterartifactId>      <version>1.2.1version>    dependency>

3、防止SQL注入Druid提供了WallFilter,它是基于SQL语义分析来实现防御SQL注入攻击的

4、数据库的账号密码加密,提供ConfigFilter可以进行配置

  • 从配置文件中读取配置

  • 从远程http文件中读取配置

  • 为数据库密码提供加密功能

5、慢SQL日志输出,配置慢SQL的标准 StatFilter(Springboot例子)

spring:  datasource:    druid:      filter: "stat" # 内置的过滤器链,默认为null,类型是:new CopyOnWriteArrayList();内置的有      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

6、强大的监控功能  StatFilter(Springboot例子)

    6.1 只需要添加配置即可

spring:  datasource:    druid:      filter: "stat" # 内置的过滤器链,默认为null,类型是:new CopyOnWriteArrayList();内置的有      ## 开启页面      stat-view-servlet:        enabled: true        url-pattern: /druid/*        login-password: gaoqijin        login-username: gaoqijin

7、多数据源的配置(Springboot例子)

7.1 添加配置application.properties
spring.datasource.url=spring.datasource.username=spring.datasource.password=# Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖...spring.datasource.druid.initial-size=5spring.datasource.druid.max-active=5...# Druid 数据源 1 配置,继承spring.datasource.druid.* 配置,相同则覆盖...spring.datasource.druid.one.max-active=10spring.datasource.druid.one.max-wait=10000...# Druid 数据源 2 配置,继承spring.datasource.druid.* 配置,相同则覆盖...spring.datasource.druid.two.max-active=20spring.datasource.druid.two.max-wait=20000...
7.2 添加配置数据源config
@Primary@Bean@ConfigurationProperties("spring.datasource.druid.one")public DataSource dataSourceOne(){    return DruidDataSourceBuilder.create().build();}@Bean@ConfigurationProperties("spring.datasource.druid.two")public DataSource dataSourceTwo(){    return DruidDataSourceBuilder.create().build();}

....

....

解读Druid 会发现,Druid很多扩展功能都是通过过滤器链完成的,内置的过滤器链跟别名如下:

比如:StatFilter 别名为:stat

Log4jFilter 别名为:log4j

druid.filters.default=com.alibaba.druid.filter.stat.StatFilterdruid.filters.stat=com.alibaba.druid.filter.stat.StatFilterdruid.filters.mergeStat=com.alibaba.druid.filter.stat.MergeStatFilterdruid.filters.counter=com.alibaba.druid.filter.stat.StatFilterdruid.filters.encoding=com.alibaba.druid.filter.encoding.EncodingConvertFilterdruid.filters.log4j=com.alibaba.druid.filter.logging.Log4jFilterdruid.filters.log4j2=com.alibaba.druid.filter.logging.Log4j2Filterdruid.filters.slf4j=com.alibaba.druid.filter.logging.Slf4jLogFilterdruid.filters.commonlogging=com.alibaba.druid.filter.logging.CommonsLogFilterdruid.filters.commonLogging=com.alibaba.druid.filter.logging.CommonsLogFilterdruid.filters.wall=com.alibaba.druid.wall.WallFilterdruid.filters.config=com.alibaba.druid.filter.config.ConfigFilterdruid.filters.haRandomValidator=com.alibaba.druid.pool.ha.selector.RandomDataSourceValidateFilter

Springboot 开发使用druid,配置详解:

spring:  datasource:    druid:      ## 连接池的配置      initial-size: 5 # 连接池 初始化大小,默认值为 0      min-idle: 10 # 连接池最小空闲数,默认值为 0      max-active: 20 # 连接池最大连接数,默认值为 8      max-wait: 1000 # 连接等待数,默认是-1,无限等待,单位是毫秒      pool-prepared-statements: false # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。      max-open-prepared-statements: -1 #最大缓存PSCache的数量,默认值为-1;当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100      validation-query: "select 1" # 心跳检测的sql语句,默认是null,即不启动心跳检测      validation-query-timeout: 10 # 心跳检测的频率,默认是-1,即不启动心跳检测      test-on-borrow: false # 与数据库建立连接的时间,是否发起心跳检测,影响性能;主要作用:防止取到的连接不可用;默认值是false      test-on-return: false # 当空闲连接关闭前,是否发起心跳检测,影响性能;默认值是false      test-while-idle: true # 是否在空闲的时候,发起心跳检测,建议开启,不影响性能#      time-between-eviction-runs-millis: 60000 #  配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒#      min-evictable-idle-time-millis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒,默认是:1000L * 60L * 30L#      max-evictable-idle-time-millis: 6000000  # 配置一个连接在池中最大生存的时间,单位是毫秒,默认是:1000L * 60L * 30L      keep-alive: true # 是否保存长连接,1.1.16 ,推荐为true,默认值为false      ## 配置监控统计拦截的filters      filter: "stat" # 内置的过滤器链,默认为null,类型是:new CopyOnWriteArrayList();内置的有

启动成功的标识:

987213443eacdf40319e15ef3296fbb7.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程知识:既然已经有数组了,为什么还要链表?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删对于不少开发者而言&#xff0c;链表(linked list)这种数据结构既熟悉又陌生&#xff0c;熟悉是因为它确实是非常基础的数据结构&#xff0c;陌生…

jcache_随机JCache内容:多个提供程序和JMX Bean

jcacheJCache&#xff08;JSR 107&#xff09;是用于缓存的Java标准…足够了。 没有更多介绍性的东西。 这是一则速成文章&#xff0c;内容涉及 多个JCache提供程序配置&#xff0c;以及 功能&#xff1a;通过JMX Mbeans的JCache统计信息 管理多个JCache提供程序 如果您只使…

python webbrowser点击_用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!...

引言如果谈到这几年手机上各平台最常见的引流福利&#xff0c;必然是答题赢大奖系列小游戏了。像什么头号英雄&#xff0c;百万玩家之类的&#xff0c;充斥在我们生活中&#xff0c;同时也成为了我们生活中常见的娱乐方式。但是有时候就会想&#xff0c;能不能实现手机自动答题…

程序员的年终总结,各种版本各种残

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删朱自清版这几天心里颇不宁静了&#xff0c;眼看上线的日子越来越临近&#xff0c;而项目Bug之多&#xff0c;密密的交叉着&#xff0c;却无从改起…

securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐

想要直观的了解自己电脑状况&#xff0c;那么一款好用的电脑跑分软件无疑是必不可少的&#xff0c;毕竟他能够将测试结果用跑分的形式计算出来。那么&#xff0c;电脑跑分软件哪个比较好呢&#xff1f;下面是小编分享的好用的电脑跑分软件推荐&#xff0c;游戏玩家们可不要错过…

C语言,单片机绕不过的坎,你对C语言内存分配了解多少呢

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删一、static在C语言里面可以用来修饰变量&#xff0c;也可以用来修饰函数。1、 先看用来修饰变量的时候。变量在C语言里面可分为存在全局数据区、…

内存 增量数据持久_内存中数据模型和大数据持久性

内存 增量数据持久ORM框架在需要与关系数据库进行交互时可以帮助开发人员。 对于关系数据库&#xff0c;有许多出色的ORM框架&#xff0c;例如Hibernate和Apache OpenJPA&#xff0c;其中一些确实很棒。 如今&#xff0c;大数据正在涌现&#xff0c;越来越多的人开发在大数据上…

自学编程的6个技巧总结

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删有一天&#xff0c;我的一个在学编程的朋友问我&#xff1a;“我想快速学习编程&#xff0c;你有什么好的推荐吗&#xff1f;”我曾在上大学的时…

C语言如何知自身函数的实际地址与大小

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删事情的起因大概是这样……在很久很久以前&#xff0c;我最早用的是MASM&#xff08;Win32ASM&#xff09;写程序&#xff0c;从平台兼容性、开发…

xtext_使用Xtext为Eclipse和IntelliJ开发DSL

xtext在这篇文章中&#xff0c;我们将看到如何开发一种简单的语言。 我们的目标是&#xff1a; 语言的解析器 IntelliJ的编辑器 。 编辑器应具有语法突出显示&#xff0c;验证和自动完成功能 我们还将免费提供Eclipse和Web编辑器的编辑器 &#xff0c;但请包含您的兴奋之处&…

sed 插入多行_Linux三剑客之sed

sed命令用法小记版本&#xff1a;CentOS7▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼好久没更新文章了&#xff0c;项目的事情太多&#xff0c;总得给自己的懒惰找个借口&#xff0c;哈哈~话不多说进入正题创建测试数据[aliscaspark02 a]$ cat data#test the sedThis is the header l…

分享一些超级炫酷的C语言小技巧

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单&#xff0c;并且仍然有一些非常…

C++编程新手容易犯的 10 种编程错误

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删公司每年都会有一定的人员流动&#xff0c;相应地也会招一些应届生补充进来&#xff0c;指导应届生已经成为老员工的必修课了。平日里会我们会经…

Linux上C语言程序编译过程详解

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删本文将介绍如何将高层的C/C语言编写的程序转换成为处理器能够执行的二进制代码的过程&#xff0c;包括四个步骤&#xff1a;预处理&#xff08;P…

C语言,动图展示十大经典排序算法

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删以前也零零碎碎发过一些排序算法&#xff0c;但排版都不太好&#xff0c;又重新整理一次&#xff0c;排序算法是数据结构的重要部分&#xff0c;…

java ee各类组件_在Java EE组件中使用骆驼路线

java ee各类组件从现在开始我一直在与Camel合作&#xff0c;我真的很喜欢它的简单性。 在Java EE之上使用它一直是一个挑战&#xff0c;我最近发表了一篇关于如何做到这一点的演讲&#xff0c;而在Java EE中引导Camel的不同方法实际上建议使用WildFly-Camel Subsystem 。 在正在…

5gnr帧结构特点有哪些_真空离子束刻蚀设备的结构特点有哪些

离子束刻蚀设备有立式、卧式两种结构。通常情况下&#xff0c;该设备以卧式的结构居多&#xff0c;因为采用卧式结构的话&#xff0c;离子源发出的离子束为水平喷射方向&#xff0c;大部分的刻蚀溅射物将落在真空室的底部&#xff0c;可在一定程度上将溅射材料的重新沉积减少。…

老了就不能编程?大龄程序员在线“辟谣”:15 年后,我变得更好了

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删几年前&#xff0c;Quora 上的一个提问在程序员圈内掀起热议&#xff1a;“随着年龄的增长&#xff0c;人们会对编程失去兴趣吗&#xff1f;预计…

wildfly管理控制台_WildFly管理控制台已更新–请求反馈

wildfly管理控制台红帽JBoss企业应用程序平台&#xff08;EAP&#xff09;和WildFly具有共生关系 。 简而言之&#xff0c;红帽JBoss企业应用程序平台&#xff08;JBoss EAP&#xff09;保留了WildFly社区项目&#xff08;以前称为JBoss Application Server&#xff09;的所有创…

性能测试中脚本怎么写_脚本在流程中的性能影响

性能测试中脚本怎么写我们经常看到人们出于各种目的而使用脚本&#xff08;例如&#xff0c;在服务任务&#xff0c;执行侦听器等中&#xff09;。 使用脚本和Java逻辑通常很有意义&#xff1a; 它不需要打包到jar中并放在classpath上 它使流程定义更易于理解&#xff1a;无需…