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 }