Human0722's blog Human0722's blog
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Human0722

Gravity always win
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Spring Framework

  • Spring Boot

  • Java 类库

    • Lombok
    • Mapstruct
    • Swagger
    • druid starter
      • Mybatis
      • Mybatis_Plus
    • 数据库

    • 解决方案

    • Java.Content
    • Java 类库
    Xueliang
    2022-08-31
    目录

    druid starter

    Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。

    • 官方文档地址: https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter (opens new window)

    Druid 是数据库连接池和监控工具,可以用在任何Java项目中. Druid Spring Boot Starter 是面向 Spring Boot 定制的一个为了减少配置的启动器。如果不是在Spring Boot项目中,可以直接使用Druid (opens new window)。

    # 依赖引入

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.17</version>
    </dependency>
    
    1
    2
    3
    4
    5

    # 配置

    # JDBC配置

    # 数据库连接url
    spring.datasource.url= 
    # 数据库连接用户名
    spring.datasource.username=
    # 数据库连接密码
    spring.datasource.password=
    # OR
    spring.datasource.druid.url=
    spring.datasource.druid.username=
    spring.datasource.druid.password=
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    如果不使用 Druid 的配置,还需要一条额外的配置如下:

    # 数据库连接驱动
    spring.datasource.driver-class-name=
    # OR
    spring.datasource.druid.driver-class-name=
    
    1
    2
    3
    4

    加入 Druid 依赖后可以不指定 driver-class-name,Druid 会根据url自动查找驱动类。如url=jdbc:postgresql://对应 org.postgresql.Driver。 JDBC配置完后,如果不需要额外配置连接池参数、监控,可以直接使用Druid。

    # 连接池配置

    # 初始化连接数
    spring.datasource.druid.initial-size=
    # 最大连接数, maxPoolSize
    spring.datasource.druid.max-active=
    # 最小空闲连接数, minPoolSize
    spring.datasource.druid.min-idle=
    # 最大等待时间
    spring.datasource.druid.max-wait=
    # 是否缓存preparedStatement,默认为false
    spring.datasource.druid.pool-prepared-statements=
    # 每个连接池的最大缓存Statement数量
    spring.datasource.druid.max-pool-prepared-statement-per-connection-size= 
    # 每个连接池的最大缓存Statement数量
    spring.datasource.druid.max-open-prepared-statements= #和上面的等价
    # 检测连接是否有效的sql,默认为select 1
    spring.datasource.druid.validation-query=
    # 检测连接是否有效的sql执行超时,默认为3秒
    spring.datasource.druid.validation-query-timeout=
    # validation-query配置时生效,获取连接时执行 validation-query, 默认为 false, 建议设置成false.
    spring.datasource.druid.test-on-borrow=
    # validation-query配置时生效,归还连接时候执行 validation-query, 默认为 false, 建议设置成false.
    spring.datasource.druid.test-on-return=
    # validation-query配置时生效,定期检查,如果连接空闲时间大于 timeBetweenEvictionRunsMillis,则执行 validation-query, 建议设置成true.
    spring.datasource.druid.test-while-idle=
    # 配置多久才需要进行一次检测,检测需要关闭的空闲连接,单位是毫秒 
    spring.datasource.druid.time-between-eviction-runs-millis=
    # 配置一个连接在连接池中的最小生存时间,单位是毫秒
    spring.datasource.druid.min-evictable-idle-time-millis=
    # 配置一个链接在连接池中的最大生存时间,单位是毫秒
    spring.datasource.druid.max-evictable-idle-time-millis=
    spring.datasource.druid.filters= #配置多个英文逗号分隔
    
    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

    # 监控配置

    # WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
    spring.datasource.druid.web-stat-filter.enabled= #是否启用StatFilter默认值false
    # StatFilter的url-pattern,默认为/druid/*
    spring.datasource.druid.web-stat-filter.url-pattern=
    # StatFilter的exclusions,默认为*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
    spring.datasource.druid.web-stat-filter.exclusions=
    # 是否打开 session 统计,默认为 false
    spring.datasource.druid.web-stat-filter.session-stat-enable=
    # 设置 session 统计的最大值,默认是 1000
    spring.datasource.druid.web-stat-filter.session-stat-max-count=
    # 让druid感知用户信息,值是session中保存的sessionName,如果配置为a,会去session中找键为a的值
    spring.datasource.druid.web-stat-filter.principal-session-name=
    # 让druid感知用户信息,值是cookie中保存的cookieName,如果配置为a,会去cookie中找键为a的值
    spring.datasource.druid.web-stat-filter.principal-cookie-name=
    # 是否开启单个监控url调用的sql列表 默认开启 
    spring.datasource.druid.web-stat-filter.profile-enable=
    
    # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
    spring.datasource.druid.stat-view-servlet.enabled= #是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
    # StatViewServlet的url-pattern,默认为/druid/*
    spring.datasource.druid.stat-view-servlet.url-pattern=
    # 是否允许重置统计数据,默认为false
    spring.datasource.druid.stat-view-servlet.reset-enable=
    # web登录用户名
    spring.datasource.druid.stat-view-servlet.login-username=
    # web登录密码
    spring.datasource.druid.stat-view-servlet.login-password=
    # 白名单,多个ip以逗号分隔,如
    spring.datasource.druid.stat-view-servlet.allow=
    # 黑名单,多个ip以逗号分隔,如
    spring.datasource.druid.stat-view-servlet.deny=
    
    # Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
    spring.datasource.druid.aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
    
    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

    开启监控的web页面功能需要配置WebStatFilter 和 StatViewServlet。前者用于监控数据的采集,后者用于监控数据的展示。

    # 拿来就用的配置

    copy from ruoyi

      # 数据源配置
      spring:
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          driverClassName: com.mysql.cj.jdbc.Driver
          druid:
            url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password:
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter:
              enabled: true
            statViewServlet:
              enabled: true
              # 设置白名单,不填则允许所有访问
              allow:
              url-pattern: /druid/*
              # 控制台管理用户名和密码
              login-username: ruoyi
              login-password: 123456
            filter:
              stat:
                enabled: true
                # 慢SQL记录
                log-slow-sql: true
                slow-sql-millis: 1000
                merge-sql: true
              wall:
                config:
                  multi-statement-allow: true
    
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48

    # 去广告

    广告地址来自于 commom.js, 拦截该文件清空内容。

    @Configuration
    public class DruidSqlConfiguration {
        @Bean
        @ConditionalOnProperty(name = {"spring.datasource.druid.stat-view-servlet.enabled"},havingValue = "true")
        public FilterRegistrationBean removeADFilterRegistrationBean(DruidStatProperties druidStatProperties) {
            //获取Web监控页面的参数
            DruidStatProperties.StatViewServlet statViewServlet = druidStatProperties.getStatViewServlet();
            //提取common.js的配置路径
            String urlPattern = statViewServlet.getUrlPattern() != null? statViewServlet.getUrlPattern():"/druid/*";
            String commonJsPattern = urlPattern.replaceAll("\\*","js/common.js");
            //定义过滤器
            Filter filter = new javax.servlet.Filter() {
                @Override
                public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws IOException, ServletException {
                    String content = Utils.readFromResource("support/http/resources/js/common.js");
                    content =  content.replace("this.buildFooter();","");
                    servletResponse.getWriter().write(content);
                }
            };
            FilterRegistrationBean registrationBean = new FilterRegistrationBean();
            registrationBean.setFilter(filter);
            registrationBean.addUrlPatterns(commonJsPattern);
            return registrationBean;
        }
    
    }
    
    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
    Swagger
    Mybatis

    ← Swagger Mybatis→

    最近更新
    01
    DefineSprintBootStarter
    03-23
    02
    Spring MVC 启动流程分析
    03-23
    03
    Redis
    03-23
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Human0722 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式