SpringBoot配置Druid


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 }

 


免責聲明!

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



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