整合Druid,导入所需的包,并进行相关配置

pom.xml

  1. <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>druid-spring-boot-starter</artifactId>
  5. <version>1.2.8</version>
  6. </dependency>

application.yml

全部配置

  1. spring:
  2. datasource:
  3. username: root
  4. password: 123456
  5. url: jdbc:mysql://localhost:3306/spring-boot-test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
  6. driver-class-name: com.mysql.jdbc.Driver
  7. type: com.alibaba.druid.pool.DruidDataSource # 数据库连接池类别
  8. druid:
  9. initial-size: 5 # 初始化大小
  10. min-idle: 10 # 最小连接数
  11. max-active: 20 # 最大连接数
  12. max-wait: 60000 # 获取连接时的最大等待时间
  13. min-evictable-idle-time-millis: 300000 # 一个连接在池中最小生存的时间,单位是毫秒
  14. time-between-eviction-runs-millis: 60000 # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
  15. filters: stat,wall # 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计
  16. validation-query: SELECT 1 FROM DUAL # 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
  17. test-on-borrow: true # 申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
  18. test-on-return: false # 归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
  19. test-while-idle: false # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
  20. stat-view-servlet:
  21. enabled: true # 是否开启 StatViewServlet
  22. allow: 127.0.0.1 # 访问监控页面 白名单,默认127.0.0.1
  23. deny: 192.168.56.1 # 访问监控页面 黑名单
  24. login-username: admin # 访问监控页面 登陆账号
  25. login-password: admin # 访问监控页面 登陆密码
  26. filter:
  27. stat:
  28. enabled: true # 是否开启 FilterStat,默认true
  29. log-slow-sql: true # 是否开启 慢SQL 记录,默认false
  30. slow-sql-millis: 5000 # 慢 SQL 的标准,默认 3000,单位:毫秒
  31. merge-sql: false # 合并多个连接池的监控数据,默认false

通用配置

  1. spring:
  2. datasource:
  3. driver-class-name: com.mysql.cj.jdbc.Driver
  4. url: jdbc:mysql://localhost:3306/dark-cloud?useUnicode=true&characterEncoding=UTF-8&useSSL=false&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8
  5. username: ENC(lQnwIYViOcDvfMxgrtkiOTC46ZKxAl5cDdeYsQYvQk3j2JDGb6cT3a91Dm16nKA2)
  6. password: ENC(Q1/gpAt7JzjubT2mfPJ1kixtFUMj6R+g3mZ2L7/DpNcgCqmOfEoJJrENIciR+EBZ)
  7. type: com.alibaba.druid.pool.DruidDataSource
  8. druid:
  9. initial-size: 1
  10. min-idle: 1
  11. max-active: 20
  12. max-wait: 60000
  13. #打开PSCache,并且指定每个连接PSCache的大小
  14. poolPreparedStatements: true
  15. maxPoolPreparedStatementPerConnectionSize: 20
  16. time-between-eviction-runs-millis: 60000 # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
  17. min-evictable-idle-time-millis: 300000 # 连接在连接池中存活的时间
  18. validation-query: SELECT 1 FROM DUAL # 检测连接是否有效的 SQL语句,为空时以下三个配置均无效
  19. test-while-idle: true # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,默认false,建议开启,不影响性能
  20. test-on-borrow: false
  21. test-on-return: false
  22. stat-view-servlet:
  23. enabled: true
  24. login-username: ENC(1m7AWL3/9hnj/+GJXDQJIg1o1eAW/lAE7D8vIdPiE8F/tYW9JjInWTvzLtkJpLUC)
  25. login-password: ENC(1m7AWL3/9hnj/+GJXDQJIg1o1eAW/lAE7D8vIdPiE8F/tYW9JjInWTvzLtkJpLUC)
  26. filters: stat,wall,log4j # 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计

配置数据源

  1. @Configuration
  2. public class DruidConfig {
  3. @ConfigurationProperties(prefix = "spring.datasource")
  4. @Bean
  5. public DataSource druid(){
  6. return new DruidDataSource();
  7. }
  8. }

配置类(配置监控管理)

配置过滤器,防止恶意上传文件
所以在配置类中添加过滤器
但是如果使用了权限框架。该配置可以省略
最终代码如下

  1. @Configuration
  2. public class DruidConfig {
  3. @Bean
  4. @ConfigurationProperties(prefix = "spring.datasource")
  5. public DataSource druid(){
  6. return new DruidDataSource();
  7. }
  8. //1、配置 Druid 监控管理后台的Servlet;
  9. @Bean
  10. public ServletRegistrationBean statViewServlet(){
  11. ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
  12. //参数配置
  13. Map<String,String> initParams = new HashMap<>();
  14. initParams.put("loginUsername","admin");
  15. initParams.put("loginPassword","123456");
  16. initParams.put("allow",""); //默认就是允许所有访问
  17. //deny:Druid 后台拒绝谁访问,表示禁止此ip访问
  18. // initParams.put("deny","192.168.10.132");
  19. bean.setInitParameters(initParams);
  20. return bean;
  21. }
  22. //2、配置一个web监控的filter
  23. @Bean
  24. public FilterRegistrationBean webStatFilter(){
  25. FilterRegistrationBean bean = new FilterRegistrationBean();
  26. bean.setFilter(new WebStatFilter());
  27. Map<String,String> initParams = new HashMap<>();
  28. initParams.put("exclusions","*.js,*.css,/druid/*");
  29. bean.setInitParameters(initParams);
  30. bean.setUrlPatterns(Collections.singletonList("/*"));
  31. return bean;
  32. }

访问管理

  1. //启动项目之后
  2. //在浏览器中输入http://IP:端口号/druid/index.html访问监控中心
  3. //如果有配置登录账号密码,则需要进行登录

附录:

多数据源配置参考:https://www.cnblogs.com/ziyue7575/p/549bc1f2e0996ed979bd09c25a6a26c0.html