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