Spring Boot 2.1.0中 druid連接池的yml配置 免去配置類 純yml

使用spring boot中配置druid的時候遇到的幾個坑

首先spring boot版本 2.1.0

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.0.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

druid版本  1.1.10

<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter druid 數據源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

 

版本一定要一致

yml文件配置

spring: 
  datasource:
    url: jdbc:mysql://你自己的url
    username: 數據庫賬號
    password: 數據庫密碼
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 下面爲連接池的補充設置,應用到上面所有數據源中
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置獲取連接等待超時的時間
      max-wait: 60000
      # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打開PSCache,並且指定每個連接上PSCache的大小
      pool-prepared-statements: true
      #   配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆
      max-pool-prepared-statement-per-connection-size: 20
      filters: stat,wall
      use-global-data-source-stat: true
      # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 配置監控服務器
      stat-view-servlet:
        login-username: admin
        login-password: 123456
        reset-enable: false
        url-pattern: /druid/*
        # 添加IP白名單
        #allow:
        # 添加IP黑名單,當白名單和黑名單重複時,黑名單優先級更高
        #deny:
      web-stat-filter:
        # 添加過濾規則
        url-pattern: /*
        # 忽略過濾格式
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

坑一:

    一開始根本不知道怎麼玩,查找到的文章中的yml文件千篇一律,因爲版本的原因,yml文件有的時候不能一致和生效

特別是在 配置

filters: stat,wall

 

的時候,總是報錯。網上給的參數的話這裏都是三個參數,還有一個log4j

在他們的配置中是不會報錯的,一般是spring boot 1.5中可以使用,但是到了2.0之後加上log4j就會報錯,2.0之後2.1記得去掉。

坑二:

    看了很多,都是使用了還要寫一個配置類然後用@Configuration註解交給spring管理創建 stat-view-servlet(監控服務器)和web-stat-filter(攔截器)

然後我就跟着文章上面的去配了,在配置類中配置url-mapping啦,賬號,用戶名啦,然後攔截規則和放行規則啦等等

然後打開 localhost:8080/druid 很開心,我擦成功了

然後有一天我把spring boot版本換到了2.1問題就來了, 項目啓動報錯,意思是startfilter重複定義 就是說在yml中已經默認給你配了startfilter然後你在配置類中又用@Bean注入了一個startfilter 在spring boot 2.0中是可以啓動的,但是2.1不行,這個問題搞了我好久。然後發現可以完全不用配置類,全部都用yml參數來注入。參照我上面的配置吧,注意boot和druid的版本哦!

 

坑三:

   

在springBoot2.1中 
driver-class-name: com.mysql.jdbc.Driver

你的數據庫驅動類是不用手動指定的

加載類'COM.MySQL .jDBC.Cudio'。這是不贊成的。新的驅動程序類是'COM.MySQL .cj.jdbc .驅動程序'.驅動程序通過SPI自動註冊,並且通常不需要手動加載驅動程序類。

 

把這個去掉就行了。

 只要版本是我寫的這兩個都是蠻新的,照搬就行了。到此純yml配置druid完成。

 

對了最後提一下

 web-stat-filter:
        # 添加過濾規則
        url-pattern: /*
        # 忽略過濾格式
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

這裏的exclusions忽略過濾格式 記得一定要加 " " 不然也是錯的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章