亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關于springboot配置druid數(shù)據(jù)源不生效問題(踩坑記)

 更新時間:2021年09月25日 10:07:50   作者:九天漩女  
今天日常跟著網(wǎng)課學習,學到了整合druid數(shù)據(jù)源,遇到了好幾個坑,希望這篇文章可以幫助一些和我一樣踩坑的人

pom文件

如果你的springboot項目要用到druid,那么這三個依賴必不可少:

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--Druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>
        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

我踩到的第一個坑就踩到這了。當時我沒有引入druid-spring-boot-starter這個依賴,所以在測試的時候就出了問題,最后還是查找了資料才解決。下面踩的坑就更加離譜了。

踩坑經(jīng)歷與解決方案

起初,我的yml配置文件是這樣寫的:

spring:
  datasource:
    username: root
    password: bugeinikan
    url: jdbc:mysql://localhost:3306/2021summer?useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initialSize: 5
      minIdle: 5
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true

這看起來毫無毛病,而且idea也并沒有報錯。
然后我們把數(shù)據(jù)源添加到容器中,DruidConfig類代碼如下:

@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
}

編寫測試類,測試程類代碼如下:

@SpringBootTest
class ApplicationTests {
    @Autowired
    DataSource dataSource;
    @Test
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getClass());
        //獲得連接
        Connection connection =   dataSource.getConnection();
        System.out.println(connection);
        DruidDataSource druidDataSource = (DruidDataSource) dataSource;
        System.out.println("druidDataSource 數(shù)據(jù)源最大連接數(shù):" + druidDataSource.getMaxActive());
        System.out.println("druidDataSource 數(shù)據(jù)源初始化連接數(shù):" + druidDataSource.getInitialSize());
        //關閉連接
        connection.close();
    }
}

輸出結果:

class com.alibaba.druid.pool.DruidDataSource
2021-09-24 16:12:52.689 INFO 4408 — [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@7b96de8d
druidDataSource 數(shù)據(jù)源最大連接數(shù):8
druidDataSource 數(shù)據(jù)源初始化連接數(shù):0

程序看上去毫無問題,可是輸出的結果卻與自己設置的不同。我們再來打斷點具體看一下:

在這里插入圖片描述

可以看到,在yml文件中,對數(shù)據(jù)源的username、password、url和driverClass配置都是生效的。
再往下看:

在這里插入圖片描述

yml文件中,設置的maxActive和maxWait明明是20和60000,在這里顯示的卻是默認的屬性,這說明我們在yml文件中寫的spring.datasource.druid配置并沒有生效,抱著試一試的態(tài)度,我對yml文件進行了如下的修改:

spring:
  datasource:
    username: root
    password: bugeinikan
    url: jdbc:mysql://localhost:3306/2021summer?useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true

這時,idea就給我報出無法解析,如圖:

在這里插入圖片描述

不管它了,死馬也要當活馬醫(yī),我們啟動測試程序,運行結果:

class com.alibaba.druid.pool.DruidDataSource
2021-09-24 16:19:45.095 INFO 11428 — [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@67e25252
druidDataSource 數(shù)據(jù)源最大連接數(shù):20
druidDataSource 數(shù)據(jù)源初始化連接數(shù):5

這次輸出的居然和我們配置的一樣,在后面的斷點測試中,各項屬性也都和配置的一樣。
不得不說,這次真是被idea坑慘了,剛開始以為是注入失敗的問題,然后還查了很多資料。我的springboot版本是2.5.4,希望這個文章可以幫助那些和我一樣踩坑的人。

到此這篇關于springboot配置druid數(shù)據(jù)源不生效問題的文章就介紹到這了,更多相關springboot配置druid數(shù)據(jù)源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java利用遺傳算法求解最短路徑問題

    Java利用遺傳算法求解最短路徑問題

    遺傳算法(Genetic Algorithm,GA)最早是由美國的John holland于20世紀70年代提出,該算法是根據(jù)大自然中生物體進化規(guī)律而設計提出的。本文將利用遺傳算法求解最短路徑問題,需要的可以參考一下
    2022-06-06
  • Spring Boot項目實戰(zhàn)之攔截器與過濾器

    Spring Boot項目實戰(zhàn)之攔截器與過濾器

    這篇文章主要介紹了Spring Boot項目實戰(zhàn)之攔截器與過濾器,文中給大家詳細介紹了springboot 攔截器和過濾器的基本概念,過濾器的配置,需要的朋友可以參考下
    2018-01-01
  • SpringBoot設置Session失效時間的解決方案

    SpringBoot設置Session失效時間的解決方案

    當過期時間是大于1分鐘的時候是沒有什么問題的,但是如果設置過期時間小于1分鐘,就會失效,這篇文章主要介紹了SpringBoot設置Session失效時間的解決方案,需要的朋友可以參考下
    2024-05-05
  • JAVA核心知識之ConcurrentHashMap源碼分析

    JAVA核心知識之ConcurrentHashMap源碼分析

    這篇文章主要介紹了JAVA核心知識之ConcurrentHashMap源碼分析,想了解ConcurrentHashMap的同學一定要看啊
    2021-04-04
  • Java框架Quartz中API、Jobs和Trigger詳解

    Java框架Quartz中API、Jobs和Trigger詳解

    這篇文章主要介紹了Java框架Quartz中API、Jobs和Trigger詳解,JobDetail?對象是在將?job?加入?scheduler?時,由客戶端程序(你的程序)創(chuàng)建的,它包含?job?的各種屬性設置,以及用于存儲?job?實例狀態(tài)信息的?JobDataMap,需要的朋友可以參考下
    2023-11-11
  • Java生成唯一ID的三種方法總結

    Java生成唯一ID的三種方法總結

    單機環(huán)境下,可以使用AtomicLong來生成唯一ID;而在需要非純數(shù)字形式的場景中,可以通過UUID結合哈希函數(shù)如MD5或SHA-1轉(zhuǎn)換成數(shù)字,但需注意哈希碰撞的低概率風險;對于分布式系統(tǒng),模擬Snowflake算法是一種復雜但有效的方法,每種方法都有其適用場景和潛在問題
    2024-09-09
  • java書店系統(tǒng)畢業(yè)設計 用戶模塊(3)

    java書店系統(tǒng)畢業(yè)設計 用戶模塊(3)

    這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設計,第三步系統(tǒng)總體設計,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JedisPool資源池優(yōu)化方法

    JedisPool資源池優(yōu)化方法

    這篇文章主要介紹了JedisPool資源池優(yōu)化方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • SSH框架網(wǎng)上商城項目第26戰(zhàn)之訂單支付后發(fā)送短信提醒

    SSH框架網(wǎng)上商城項目第26戰(zhàn)之訂單支付后發(fā)送短信提醒

    這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第26戰(zhàn)之訂單支付后發(fā)送短信提醒,感興趣的小伙伴們可以參考一下
    2016-06-06
  • spring中的注解@@Transactional失效的場景代碼演示

    spring中的注解@@Transactional失效的場景代碼演示

    這篇文章主要介紹了spring中的注解@@Transactional失效的場景代碼演示,@Transactional注解是Spring框架提供的用于聲明事務的注解,作用于類和方法上,需要的朋友可以參考下
    2024-01-01

最新評論