SpringBoot配置Druid
兩種方式:
【方法一】配置文件配置:
(1)pom.xml相關依賴
1 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> 2 <dependency> 3 <groupId>com.alibaba</groupId> 4 <artifactId>druid</artifactId> 5 <version>1.1.8</version> 6 </dependency> 7 8 <!-- https://mvnrepository.com/artifact/log4j/log4j --> 9 <dependency> 10 <groupId>log4j</groupId> 11 <artifactId>log4j</artifactId> 12 <version>1.2.17</version> 13 </dependency> 14 15 <dependency> 16 <groupId>org.springframework.boot</groupId> 17 <artifactId>spring-boot-starter-jdbc</artifactId> 18 </dependency> 19 <dependency> 20 <groupId>org.springframework.boot</groupId> 21 <artifactId>spring-boot-starter-web</artifactId> 22 </dependency> 23 24 <dependency> 25 <groupId>mysql</groupId> 26 <artifactId>mysql-connector-java</artifactId> 27 <scope>runtime</scope> 28 </dependency> 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-test</artifactId> 32 <scope>test</scope> 33 <exclusions> 34 <exclusion> 35 <groupId>org.junit.vintage</groupId> 36 <artifactId>junit-vintage-engine</artifactId> 37 </exclusion> 38 </exclusions> 39 </dependency>
(2)配置application.properties文件或者application.yaml文件,我配置的是application.yaml
1 spring: 2 # 數據源配置 3 datasource: 4 type: com.alibaba.druid.pool.DruidDataSource 5 # MYSQL 5 驅動:com.mysql.jdbc.Driver,MYSQL 6+ 驅動:com.mysql.cj.jdbc.Driver 6 driver-class-name: com.mysql.cj.jdbc.Driver 7 url: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8 8 username: root 9 password: 123456 10 # 連接池配置 11 druid: 12 # 初始化大小,最小,最大 13 initial-size: 5 14 min-idle: 5 15 max-active: 20 16 # 配置獲取連接等待超時的時間 17 max-wait: 60000 18 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位毫秒 19 time-between-eviction-runs-millis: 60000 20 # 配置一個連接在池中最小生存時間 21 min-evictable-idle-time-millis: 300000 22 validation-query: SELECT 1 FROM sys_user 23 test-while-idle: true 24 test-on-borrow: false 25 test-on-return: false 26 # 打開 PSCache,並且指定每個連接上 PSCache 的大小 27 pool-prepared-statements: true 28 max-pool-prepared-statement-per-connection-size: 20 29 # 配置監控統計攔截的 Filter,去掉后監控界面 SQL 無法統計,wall 用於防火牆 30 filters: stat,wall,log4j 31 # 通過 connection-properties 屬性打開 mergeSql 功能;慢 SQL 記錄 32 connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 33 # 配置 DruidStatFilter 34 web-stat-filter: 35 enabled: true 36 url-pattern: /* 37 exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/* 38 # 配置 DruidStatViewServlet 39 stat-view-servlet: 40 url-pattern: /druid/* 41 # IP 白名單,沒有配置或者為空,則允許所有訪問 42 allow: 127.0.0.1 43 # IP 黑名單,若白名單也存在,則優先使用 44 deny: 192.168.31.253 45 # 禁用 HTML 中 Reset All 按鈕 46 reset-enable: false 47 # 登錄用戶名/密碼 48 login-username: root 49 login-password: 123
【方法二】Java代碼配置
(1)添加pom.xml依賴
1 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> 2 <dependency> 3 <groupId>com.alibaba</groupId> 4 <artifactId>druid</artifactId> 5 <version>1.1.8</version> 6 </dependency> 7 8 <!-- https://mvnrepository.com/artifact/log4j/log4j --> 9 <dependency> 10 <groupId>log4j</groupId> 11 <artifactId>log4j</artifactId> 12 <version>1.2.17</version> 13 </dependency>
(2)application.yaml配置
1 spring: 2 datasource: 3 driver-class-name: com.mysql.jdbc.Driver 4 username: root 5 password: 123456 6 url: jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC 7 type: com.alibaba.druid.pool.DruidDataSource 8 # 數據源其他配置 9 initialSize: 5 10 minIdle: 5 11 maxActive: 20 12 maxWait: 60000 13 timeBetweenEvictionRunsMillis: 60000 14 minEvictableIdleTimeMillis: 300000 15 validationQuery: SELECT 1 FROM DUAL 16 testWhileIdle: true 17 testOnBorrow: false 18 testOnReturn: false 19 poolPreparedStatements: true 20 # 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆 21 filters: stat,wall,log4j 22 maxPoolPreparedStatementPerConnectionSize: 20 23 useGlobalDataSourceStat: true 24 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
(3)增加Java類 DruidConfig.java
1 import javax.servlet.Filter; 2 import javax.servlet.Servlet; 3 import javax.sql.DataSource; 4 5 import org.springframework.boot.context.properties.ConfigurationProperties; 6 import org.springframework.boot.web.servlet.FilterRegistrationBean; 7 import org.springframework.boot.web.servlet.ServletRegistrationBean; 8 import org.springframework.context.annotation.Bean; 9 import org.springframework.context.annotation.Configuration; 10 11 import com.alibaba.druid.pool.DruidDataSource; 12 import com.alibaba.druid.support.http.StatViewServlet; 13 import com.alibaba.druid.support.http.WebStatFilter; 14 15 @Configuration 16 public class DruidConfig { 17 18 @Bean 19 // 將所有前綴為spring.datasource下的配置項都加載DataSource中 20 @ConfigurationProperties(prefix = "spring.datasource") 21 public DataSource druidDataSource() { 22 return new DruidDataSource(); 23 } 24 25 @Bean 26 public ServletRegistrationBean<Servlet> druidServlet() { 27 // 進行 druid 監控的配置處理 28 ServletRegistrationBean<Servlet> srb = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/**"); 29 // 白名單 30 srb.addInitParameter("allow", "127.0.0.1"); 31 // 黑名單 32 srb.addInitParameter("deny", "192.168.31.253"); 33 // 用戶名 34 srb.addInitParameter("loginUsername", "root"); 35 // 密碼 36 srb.addInitParameter("loginPassword", "root"); 37 // 是否可以重置數據源 38 srb.addInitParameter("resetEnable", "false"); 39 return srb; 40 } 41 42 @Bean 43 public FilterRegistrationBean<Filter> filterRegistrationBean() { 44 FilterRegistrationBean<Filter> frb = new FilterRegistrationBean<>(); 45 frb.setFilter(new WebStatFilter()); 46 // 所有請求進行監控處理 47 frb.addUrlPatterns("/*"); 48 // 排除名單 49 frb.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*"); 50 return frb; 51 } 52 53 }