日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2023/12/2 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????Druid是Java語言中最好的數據庫連接池,這話不是我說的,是Druid官方文檔自己這樣描述的,這是何等的自信!

????????連接池的作用,跟線程池的作用大同小異,都是為了減少頻繁的創建銷毀連接IO,提升性能。druid 作為阿里旗下的一個開源產品,經過阿里千萬級別的壓測跟測試,對于絕大部分的公司來說都是可以滿足的。而且這個連接池跟其他連接池對比,也是一枝獨秀。

選擇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.propertiesspring.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();內置的有

啟動成功的標識:

總結

以上是生活随笔為你收集整理的spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。