SpringBoot整合Druid监控

这二天在搭建一个单服务项目,所以就想着在里面加点数据监控之类的东西。然后就看到了druid,那么下面我们就从配置开始

  • 首先我们的pom 文件里面配置maven

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
    </dependency>
    
  • 然后在在我们application.yml里面配置数据

      spring:
      	  datasource:
              type: com.alibaba.druid.pool.DruidDataSource
              druid:
                filter: stat,wall,logging
                driver-class-name: com.mysql.cj.jdbc.Driver
                url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
                username: root
                password: root
                initial-size: 1
                min-idle: 1
                max-active: 20
                max-wait: 60000
                time-between-eviction-runs-millis: 60000
                min-evictable-idle-time-millis: 300000
                validation-query: SELECT 'X'
                test-while-idle: true
                test-on-borrow: false
                test-on-return: false
                pool-prepared-statements: false
                max-pool-prepared-statement-per-connection-size: 20
    
  • 接下来就是代码部分了

    • 新建DruidProperties

      @Data
      @ConfigurationProperties(prefix = "spring.datasource.druid")
      public class DruidProperties {
              private String url;
              private String username;
              private String password;
              private String driverClassName;
              private int initialSize;
              private int minIdle;
              private int maxActive;
              private int maxWait;
              private int timeBetweenEvictionRunsMillis;
              private int minEvictableIdleTimeMillis;
              private String validationQuery;
              private boolean testWhileIdle;
              private boolean testOnBorrow;
              private boolean testOnReturn;
              private boolean poolPreparedStatements;
              private int maxPoolPreparedStatementPerConnectionSize;
              private String filters;
              private String connectionProperties;
      }
      
    • 新建TestCoreConfig

      @Configuration
      @EnableConfigurationProperties({DruidProperties.class})
      public class TestCoreConfig {
      }
      
    • 新建DruidConfiguration

      @Slf4j
      @Configuration
      public class DruidConfiguration {
      
          @Bean
          public ServletRegistrationBean druidServlet() {
              log.info("init Druid Servlet Configuration");
              ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
              //IP白名单
              servletRegistrationBean.addInitParameter("allow", "192.168.0.119");
              //IP黑名单
              servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
              //控制台管理用户
              servletRegistrationBean.addInitParameter("loginUsername", "admin");
              servletRegistrationBean.addInitParameter("loginPassword", "admin");
      
              //是否能够重置数据 禁用HTML页面上的“Reset All”功能
              servletRegistrationBean.addInitParameter("resetEnable", "false");
              return servletRegistrationBean;
          }
      
          @Bean
          public FilterRegistrationBean filterRegistrationBean() {
              FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<>(new WebStatFilter());
              filterRegistrationBean.addUrlPatterns("/*");
              filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*png,*.css,*.ico,/druid/*");
              return filterRegistrationBean;
          }
      
          @Autowired
          private DruidProperties druidProperties;
      
          @Bean
          @Primary
          public DataSource dataSource() {
              DruidDataSource druidDataSource = new DruidDataSource();
              druidDataSource.setUrl(druidProperties.getUrl());
              druidDataSource.setUsername(druidProperties.getUsername());
              druidDataSource.setPassword(druidProperties.getPassword());
              druidDataSource.setDriverClassName(druidProperties.getDriverClassName());
      
              druidDataSource.setInitialSize(druidProperties.getInitialSize());
              druidDataSource.setMinIdle(druidProperties.getMinIdle());
              druidDataSource.setMaxActive(druidProperties.getMaxActive());
              druidDataSource.setMaxWait(druidProperties.getMaxWait());
              druidDataSource.setTimeBetweenEvictionRunsMillis(druidProperties.getTimeBetweenEvictionRunsMillis());
              druidDataSource.setMinEvictableIdleTimeMillis(druidProperties.getMinEvictableIdleTimeMillis());
              druidDataSource.setValidationQuery(druidProperties.getValidationQuery());
              druidDataSource.setTestWhileIdle(druidProperties.isTestWhileIdle());
              druidDataSource.setTestOnBorrow(druidProperties.isTestOnBorrow());
              druidDataSource.setTestOnReturn(druidProperties.isTestOnReturn());
              druidDataSource.setPoolPreparedStatements(druidProperties.isPoolPreparedStatements());
              druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(druidProperties.getMaxPoolPreparedStatementPerConnectionSize());
              try {
                  druidDataSource.setFilters(druidProperties.getFilters());
              } catch (SQLException e) {
      
                  System.err.println("druid configuration initialization filter: " + e);
              }
              return druidDataSource;
          }
      }
      
  • 创建主类TestStartApplication

    @Slf4j
    @SpringBootApplication
    public class TestStartApplication{
    
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(BootAdminStartApplication.class, args);
            String serverPort = context.getEnvironment().getProperty("server.port");
            log.info("boot admin started at http://localhost:" + serverPort);
        }
    }
    
  • 启动主类访问http://localhost:9999/druid/在这里插入图片描述

  • 用刚才设置的 admin/admin登录就好了在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AbelEthan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值