一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 使用springboot不自動初始化數據庫連接池

使用springboot不自動初始化數據庫連接池

2021-12-27 14:07天已青色等煙雨來 Java教程

這篇文章主要介紹了使用springboot不自動初始化數據庫連接池,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot不自動初始化數據庫連接池

簡介

有時候我們想自己動態的初始化數據庫連接池,但是springboot 的@SpringBootApplication注解會自動去初始化數據庫連接池,不配置的話會啟動失敗,如下提示

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Dbcp2.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.commons.dbcp2.BasicDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
INFO - Unregistering JMX-exposed beans on shutdown

解決方案

辦法就是排除自動初始化的類

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application implements CommandLineRunner {
...
}

加上這么一句

(exclude = {DataSourceAutoConfiguration.class})

就可以跳過數據庫的自動初始化,自己為所欲為了~

 

記錄下spring boot關于數據庫連接池的一個小坑

環境:spring boot 1.5、JDK1.8

application.properties配置

# 驅動配置信息
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/mealsystem?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver

#連接池的配置信息
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.filters=stat,wall,log4j
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

先找到這個類

org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder

在下面的源碼中打個斷點

public DataSource build() {
      Class<? extends DataSource> type = this.getType();
      DataSource result = (DataSource)BeanUtils.instantiate(type);
      this.maybeGetDriverClassName();
      this.bind(result);
      return result;
  }

啟動項目

使用springboot不自動初始化數據庫連接池

我們可以發現,在沒有配置spring.datasource.type時,spring boot默認的連接池是tomcat-jdbc

也就是說我們在application.properties中配置的連接池參數是無效的。

好,那我們再配置下這個屬性,使用阿里巴巴的druid

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

再啟動下

使用springboot不自動初始化數據庫連接池

再來看看1.5版本org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder的源碼

private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] {
          "org.apache.tomcat.jdbc.pool.DataSource",
          "com.zaxxer.hikari.HikariDataSource",
          "org.apache.commons.dbcp.BasicDataSource", // deprecated
          "org.apache.commons.dbcp2.BasicDataSource" };
  • spring boot 1.5的版本默認連接池為tomcat-jdbc
  • spring boot 2.0的版本默認連接池為HikariCP

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/x356982611/article/details/95355406

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 欧美日韩国产亚洲人成 | 国产99精品成人免费视频 | 亚洲精品午夜久久aaa级久久久 | chanelpreston欧美网站 | 国产精品福利在线观看秒播 | 成人福利在线 | 亚洲国产精品牛在线 | 国产成人激情 | 国产好痛疼轻点好爽的视频 | 日韩一区二区三区四区五区 | 高清视频在线播放ww | 香蕉97超级碰碰碰免费公 | 星星动漫在线观看无删减 | 99久久免费看精品国产一区 | 禁忌h1v1怀孕 | 国产黄频在线观看 | 东北美女野外bbwbbw免费 | 1024在线视频精品免费 | 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 99精品视频免费在线观看 | 好猛好紧好硬使劲好大刺激视频 | 校花小雪灌满了男人们的浓浆 | 男gay男gay男gay野外 | 日本在线播放 | 韩国最新三级网站在线播放 | 99爱在线观看精品视频 | 爆操美女在线观看 | 国产综合久久久久久 | 日本玖玖视频 | 久久sese| 成人伊在线影院 | 久久www免费人成高清 | 成年视频在线观看 | 精品日韩二区三区精品视频 | gangbang日本| 91精品国产91热久久久久福利 | 天天操天天爽天天射 | 色哟哟在线播放 | 天堂激情网 | 女教师波多野结衣高清在线 | 亚洲高清国产品国语在线观看 |