springBoot配置druid數據源


1.pom.xml

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
如果引用

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
會有警告,提示

Cannot resolve configuration property 'spring.datasource.initialSize'

2.application.yml

配了兩個,看你喜歡哪個

spring:
application:
name: upfs-provider
datasource:
name: dataSource1 #如果存在多個數據源,監控的時候可以通過名字來區分開來。如果沒有配置,將會生成一個名字,格式是:"DataSource-" + System.identityHashCode(this)
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: root
# 下面為連接池的補充設置
druid:
initialSize: 10 #初始化連接個數
minIdle: 10 #最小空閑連接個數
maxActive: 100 #最大連接個數
maxWait: 60000 #獲取連接時最大等待時間,單位毫秒。
timeBetweenEvictionRunsMillis: 60000 #配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
minEvictableIdleTimeMillis: 30000 #配置一個連接在池中最小生存的時間,單位是毫秒
validationQuery: select 'x' #用來檢測連接是否有效的sql,要求是一個查詢語句。
testWhileIdle: true #建議配置為true,不影響性能,並且保證安全性。如果空閑時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。
testOnBorrow: true #申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能
testOnReturn: false #歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能
poolPreparedStatements: false #是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大,比如說oracle。在mysql下建議關閉。
maxPoolPreparedStatementPerConnectionSize: -1 #要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache占用內存過多的問題,可以把這個數值配置大一些,比如說100
filters: stat,wall #通過別名的方式配置擴展插件,常用的插件有:監控統計用的filter:stat,日志用的filter:log4j,防御sql注入的filter:wall
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
useGlobalDataSourceStat: false # 合並多個DruidDataSource的監控數據
  application.yml

spring:
application:
name: springboot-mybatis
datasource:
name: dataSource1 #如果存在多個數據源,監控的時候可以通過名字來區分開來。如果沒有配置,將會生成一個名字,格式是:"DataSource-" + System.identityHashCode(this)
type: com.alibaba.druid.pool.DruidDataSource
#druid相關配置
druid:
#監控統計攔截的filters
filters: stat,wall
driver-class-name: com.mysql.jdbc.Driver
#基本屬性
url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
username: root
password: root
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#獲取連接等待超時時間
max-wait: 60000
#間隔多久進行一次檢測,檢測需要關閉的空閑連接
time-between-eviction-runs-millis: 60000
#一個連接在池中最小生存的時間
min-evictable-idle-time-millis: 30000
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打開PSCache,並指定每個連接上PSCache的大小。oracle設為true,mysql設為false。分庫分表較多推薦設置為false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
3.druid數據源控制台監控配置

package com.urthink.upfs.provider.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
* druid監控控制台配置
* http://localhost:port/contextpath/druid
*/
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean druidServlet() {// 主要實現web監控的配置處理
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(
new StatViewServlet(), "/druid/*");//表示進行druid監控的配置處理操作
//servletRegistrationBean.addInitParameter("allow", "127.0.0.1,192.168.202.233");//白名單
//servletRegistrationBean.addInitParameter("deny", "192.168.202.234");//黑名單
servletRegistrationBean.addInitParameter("loginUsername", "root");//用戶名
servletRegistrationBean.addInitParameter("loginPassword", "root");//密碼
servletRegistrationBean.addInitParameter("resetEnable", "false");//是否可以重置數據源
return servletRegistrationBean;

}

@Bean //監控
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");//所有請求進行監控處理
filterRegistrationBean.addInitParameter("exclusions", "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");//排除
return filterRegistrationBean;
}

@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
4.druid監控控制台

http://localhost:port/contextpath/druid/login.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM