当前位置:   article > 正文

Springboot之Druid配置详解_springboot druid配置

springboot druid配置

参数配置说明

druid 参数配置详解 - halberd.lee - 博客园 (cnblogs.com)https://www.cnblogs.com/halberd-lee/p/11304790.htmlSpringboot中配置Druid

  • maven依赖
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. <scope>runtime</scope>
  9. </dependency>
  10. <--druid依赖-->
  11. <dependency>
  12. <groupId>com.alibaba</groupId>
  13. <artifactId>druid-spring-boot-starter</artifactId>
  14. <version>1.1.10</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-jdbc</artifactId>
  19. <version>2.5.3</version>
  20. </dependency>
  • yaml文件配置
  1. spring:
  2. datasource:
  3. # 数据源基本配置
  4. url: jdbc:mysql://localhost:3306/hotel?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
  5. username: root
  6. password: 123456
  7. driver-class-name: com.mysql.cj.jdbc.Driver
  8. type: com.alibaba.druid.pool.DruidDataSource
  9. # 数据源其他配置
  10. druid:
  11. # 配置初始化大小、最小、最大线程数
  12. initialSize: 5
  13. minIdle: 5
  14. # CPU核数+1,也可以大些但不要超过20,数据库加锁时连接过多性能下降
  15. maxActive: 20
  16. # 最大等待时间,内网:800,外网:1200(三次握手1s)
  17. maxWait: 60000
  18. timeBetweenEvictionRunsMillis: 60000
  19. # 配置一个连接在池中最大空间时间,单位是毫秒
  20. minEvictableIdleTimeMillis: 300000
  21. validationQuery: SELECT 1
  22. testWhileIdle: true
  23. # 设置从连接池获取连接时是否检查连接有效性,true检查,false不检查
  24. testOnBorrow: true
  25. # 设置从连接池归还连接时是否检查连接有效性,true检查,false不检查
  26. testOnReturn: true
  27. # 可以支持PSCache(提升写入、查询效率)
  28. poolPreparedStatements: true
  29. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  30. filters: stat,wall,log4j
  31. # 保持长连接
  32. keepAlive: true
  33. maxPoolPreparedStatementPerConnectionSize: 20
  34. useGlobalDataSourceStat: true
  35. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
  • 添加配置类

    方式一

  1. import com.alibaba.druid.pool.DruidDataSource;
  2. import com.alibaba.druid.support.http.StatViewServlet;
  3. import com.alibaba.druid.support.http.WebStatFilter;
  4. import org.springframework.boot.context.properties.ConfigurationProperties;
  5. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  6. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import javax.sql.DataSource;
  10. import java.util.Arrays;
  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 druid(){
  18. return new DruidDataSource();
  19. }
  20. //配置Druid监控
  21. @Bean
  22. public ServletRegistrationBean statViewServlet(){
  23. ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
  24. Map<String,String> initParams=new HashMap<>();
  25. initParams.put("loginUsername","admin");
  26. initParams.put("loginPassword","admin");
  27. initParams.put("allow","0.0.0.0");//默认允许所有访问
  28. bean.setInitParameters(initParams);
  29. return bean;
  30. }
  31. //配置一个web监控的filter
  32. @Bean
  33. public FilterRegistrationBean webStatFilter(){
  34. FilterRegistrationBean bean=new FilterRegistrationBean();
  35. bean.setFilter(new WebStatFilter());
  36. Map<String,String> initParams=new HashMap<>();
  37. initParams.put("exclusions","*.js,*.css,/druid/*");
  38. bean.setInitParameters(initParams);
  39. bean.setUrlPatterns(Arrays.asList("/*"));
  40. return bean;
  41. }
  42. }

    方式二(最佳,注意:将yaml文件中的filters:stat)

  1. import com.alibaba.druid.support.http.StatViewServlet;
  2. import com.alibaba.druid.support.http.WebStatFilter;
  3. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  4. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  5. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import javax.servlet.Filter;
  9. import javax.servlet.Servlet;
  10. @Configuration
  11. public class DruidConfig {
  12. /**
  13. * 配置Druid 监控启动页面
  14. *
  15. * @return servletRegistrationBean
  16. */
  17. @Bean
  18. @ConditionalOnMissingBean
  19. public ServletRegistrationBean<Servlet> druidStartViewServlet() {
  20. ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<Servlet>(new StatViewServlet(), "/druid/*");
  21. // 白名单
  22. servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
  23. // 黑名单
  24. servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
  25. // 登录查看信息的账密,用于登录Druid监控后台
  26. servletRegistrationBean.addInitParameter("loginUsername", "druid");
  27. servletRegistrationBean.addInitParameter("loginPassword", "druid");
  28. // 是否能够重置数据
  29. servletRegistrationBean.addInitParameter("resetEnable", "true");
  30. return servletRegistrationBean;
  31. }
  32. /**
  33. * Druid监控过滤器配置规则
  34. * ConditionalOnMissingBean 防止注册相同的bean
  35. *
  36. * @return filterFilterRegistrationBean
  37. */
  38. @Bean
  39. @ConditionalOnMissingBean
  40. public FilterRegistrationBean<Filter> filterRegistrationBean() {
  41. FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
  42. filterFilterRegistrationBean.setFilter(new WebStatFilter());
  43. // 添加过滤规则
  44. filterFilterRegistrationBean.addUrlPatterns("/*");
  45. // 添加不需要忽略的格式信息
  46. filterFilterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
  47. return filterFilterRegistrationBean;
  48. }
  49. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46592
推荐阅读
相关标签
  

闽ICP备14008679号