zoukankan      html  css  js  c++  java
  • SpringBoot学习笔记(二)配置druid

    SpringBoot学习笔记(二)配置druid

    第一步:引入相关依赖,全部依赖都是上一篇springboot+mybatis依赖的基础上,再加上下边的依赖,如下:

    1
    2
    3
    4
    5
    6
    <!-- Druid数据库连接池组件 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.18</version>
    </dependency>

    注意,由于druid的配置还需要一些注解,比如@WebInitParam @WebFilter 等,它们在spring boot里来自于tomcat-embed-core包,而该包又来自于spring-boot-starter-web,所以,除了上边的依赖以外,一定要保证spring-boot-starter-web 的引入,我项目引入具体如下:

    1
    2
    3
    4
    5
    <!-- Spring Boot Web 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    第二步:再springboot项目的配置文件application.yml文件中加入如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    spring:
      ##数据库连接信息
      datasource:
        url: jdbc:mysql://localhost:3306/young
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
        ###################以下为druid增加的配置###########################
        type: com.alibaba.druid.pool.DruidDataSource
        # 下面为连接池的补充设置,应用到上面所有数据源中
        # 初始化大小,最小,最大
        initialSize: 5
        minIdle: 5
        maxActive: 20
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        # 打开PSCache,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall,log4j
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        # 合并多个DruidDataSource的监控数据
        useGlobalDataSourceStat: true
        ###############以上为配置druid添加的配置########################################

    第三步:还需要添加三个配置类,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    package com.young.config;
     
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import com.alibaba.druid.pool.DruidDataSource;
     
    import javax.sql.DataSource;
     
    /**
     * 配置druid需要的配置类,引入application.properties文件中以spring.datasource开头的信息
     * 因此需要在application.properties文件中配置相关信息。
     *
     * @author young
     */
    @Configuration
    public class DruidConfig {
     
        @Bean
        @ConfigurationProperties(prefix = "spring.datasource")
        public DataSource druidDataSource() {
            DruidDataSource druidDataSource = new DruidDataSource();
            return druidDataSource;
        }
     
    }

    上图可以看出只是将DataSource对象的实现类变为了DruidDataSource对象

    下图是过滤规则的配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    package com.young.config;
     
    import com.alibaba.druid.support.http.WebStatFilter;
     
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
     
    /**
     * 配置druid过滤规则
     * @author young
     *
     */
    @WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
            initParams={
                    @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
            })
    public class DruidStatFilter extends WebStatFilter{
    }

    以上三个类配置完之后,需要在启动类多添加一个注解,既@ServletComponentScan

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package com.young;
     
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletComponentScan;
     
    @SpringBootApplication
    @ServletComponentScan //配置druid必须加的注解,如果不加,访问页面打不开,filter和servlet、listener之类的需要单独进行注册才能使用,spring boot里面提供了该注解起到注册作用
    @MapperScan("com.young.mapper")//必须加这个,不加报错,如果不加,也可以在每个mapper上添加@Mapper注释
    public class StartApplication {
     
        public static void main(String[] args) {
            SpringApplication.run(StartApplication.class, args);
        }
    }

    第四步:以上配置完成后,启动项目以后,可以访问druid页面了,比如我的项目端口号是8080,我的访问页面如下:(我没有配置项目名,springboot默认页面从“/”开始)

    账号密码即为配置类中配置的admin

  • 相关阅读:
    jmeter(46) redis
    jmeter(45) tcp/ip协议
    Codeforces Round #538 (Div. 2)D(区间DP,思维)
    Codeforces Global Round 1D(DP,思维)
    Educational Codeforces Round 57D(DP,思维)
    UPC11073(DP,思维)
    Yahoo Progamming Contest 2019D(DP,思维)
    Atcoder Beginner Contest 118D(DP,完全背包,贪心)
    Xuzhou Winter Camp 1C(模拟)
    Educational Codeforces Round 57 (Rated for Div. 2)D(动态规划)
  • 原文地址:https://www.cnblogs.com/handsome1013/p/10934464.html
Copyright © 2011-2022 走看看