小言_互联网的博客

SpringBoot使用Druid连接池

305人阅读  评论(0)

连接数据库

springboot默认数据库hikari,数据库的配置如下:


  
  1. spring:
  2.   datasource:
  3.     driver- class-name: com.mysql.cj.jdbc.Driver
  4.     url: jdbc: mysql:/ /localhost:3306/mybatis?useSSL= true&useUnicode= true&characterEncoding=UTF- 8&serverTimezone=UTC
  5.     username: wanide
  6.     password: "000000"

 

druid

Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。

使用druid需要先导入依赖:


  
  1. <dependency>
  2.     <groupId>com.alibaba </groupId>
  3.     <artifactId>druid </artifactId>
  4.     <version>1.1.21 </version>
  5. </dependency>

application.yaml配置数据库:


  
  1. spring:
  2. datasource:
  3. driver- class-name: com.mysql.cj.jdbc.Driver
  4. url: jdbc: mysql:// localhost:3306/ mybatis? useSSL= true&useUnicode= true&characterEncoding=UTF- 8&serverTimezone=UTC
  5. username: wanide
  6. password: "000000"
  7. type: com.alibaba.druid.pool.DruidDataSource
  8. #Spring Boot 默认是不注入这些属性值的,需要自己绑定
  9. #druid 数据源专有配置
  10. initialSize: 5 #初始化时建立物理连接的个数
  11. minIdle: 5 #最小连接池数量
  12. maxActive: 20 #最大连接池数量
  13. maxWait: 60000 #获取连接时最大等待时间
  14. timeBetweenEvictionRunsMillis: 60000 #Destory线程检测连接的间隔时间
  15. minEvictableIdleTimeMillis: 300000 #连接保持空闲而不被驱逐的最长时间
  16. validationQuery: SELECT 1 FROM DUAL #检测连接是否有效的sql
  17. testWhileIdle: true
  18. testOnBorrow: false #申请连接时执行validationQuery检测连接是否有效
  19. testOnReturn: false #归还连接时执行validationQuery检测连接是否有效
  20. poolPreparedStatements: true #是否缓存preparedStatements
  21. #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
  22. #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
  23. #则导入 log4j 依赖即可
  24. filters: stat,wall,log4j
  25. maxPoolPreparedStatementPerConnectionSize: 20
  26. useGlobalDataSourceStat: true
  27. connectionProperties: druid.stat.mergeSql= true;druid.stat.slowSqlMillis= 500

Druid 数据源具有监控的功能,并提供了一个 web 界面方便用户查看。


  
  1. package com.lyr.config;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import com.alibaba.druid.support.http.StatViewServlet;
  4. import com.alibaba.druid.support.http.WebStatFilter;
  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. import javax.sql.DataSource;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. @Configuration
  14. public class DruidConfig {
  15. @ConfigurationProperties(prefix = "spring.datasource")
  16. @Bean
  17. public DataSource druidDataSource(){
  18. return new DruidDataSource();
  19. }
  20. //后台监控:因为springboot内置了servlet容器,使用没有web.xml,可以用ServletRegistrationBean替代
  21. @Bean
  22. public ServletRegistrationBean statViewServlet(){
  23. ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>( new StatViewServlet(), "/druid/*");
  24. //后台需要有人登陆,账号密码
  25. HashMap<String,String> initParameters = new HashMap<>();
  26. //增加配置
  27. initParameters.put( "loginUsername", "admin"); //登陆参数是固定的
  28. initParameters.put( "loginPassword", "123456");
  29. //允许谁可以访问
  30. initParameters.put( "allow", "");
  31. bean.setInitParameters(initParameters); //设置初始化参数
  32. return bean;
  33. }
  34. }

配置完后访问http://localhost:8080/druid/login.html就可以进入后台

用户名和密码就是刚刚我们配置的,就可以查看我们对数据库的操作什么的。

 

配置过滤器


  
  1. //filter
  2. @Bean
  3. public FilterRegistrationBean webStatFilter(){
  4. FilterRegistrationBean bean = new FilterRegistrationBean();
  5. bean.setFilter( new WebStatFilter());
  6. //过滤那些请求
  7. Map<String,String> initParameters = new HashMap<>();
  8. //不过滤的
  9. initParameters.put( "exclusions", "*.js,*.css,/druid/*");
  10. bean.setInitParameters(initParameters);
  11. return bean;
  12. }

 


转载:https://blog.csdn.net/wan_ide/article/details/105137376
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场