开发者社区> 问答> 正文

使用 Starter 如何自定义 Druid 的 Filter?

我想自定义 StatFilter,没看到相关配置

原提问者GitHub用户drtrang

展开
收起
山海行 2023-07-05 20:50:52 592 0
4 条回答
写回答
取消 提交回答
  • 使用 Druid Spring Boot Starter 自定义 Druid 的 Filter,可以通过以下步骤进行操作:

    1. 创建自定义的 Filter 类:首先,您需要创建一个自定义的 Filter 类。该类应继承自 com.alibaba.druid.filter.FilterAdapter 类,并实现相应的方法。例如:

    public class MyFilter extends FilterAdapter {
        @Override
        public void init(DataSourceProxy dataSourceProxy) {
            // 这里可以进行初始化操作
        }
    
        @Override
        public void destroy() {
            // 这里可以进行清理操作
        }
    }
    

    2. 在配置文件中添加 druid.filters 属性:接下来,在配置文件中添加 druid.filters 属性,并将自定义的 Filter 类添加到列表中。例如,在 application.yml(或 application.properties)中添加如下配置:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
      druid:
        filters: stat,wall,log4j,myFilter
        filter.myFilter.class-name: com.example.MyFilter
    

    在这个示例配置中,我们在 druid.filters 属性中添加了自定义 Filter 类名为 myFilter,并通过 filter.myFilter.class-name 属性指定了该类的完整类名。

    3. 配置自定义的 Filter 属性(可选):如果您的自定义 Filter 类需要一些属性配置,可以在配置文件中添加相应的属性。例如,如果您的自定义 Filter 类需要一个名为 myProperty 的属性,可以在配置文件中添加如下配置:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
      druid:
        filters: stat,wall,log4j,myFilter
        filter.myFilter.class-name: com.example.MyFilter
        filter.myFilter.myProperty: value
    

    在这个示例配置中,我们在 filter.myFilter.myProperty 属性中添加了自定义的属性。

    通过以上步骤,您就可以使用 Druid Spring Boot Starter 自定义 Druid 的 Filter,实现更灵活的功能和定制化的配置。如果您有任何其他问题,请随时提问。

    2023-07-30 14:35:17
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在 Druid Spring Boot Starter 中,你可以通过在配置文件中添加 druid.filters 属性来自定义 Druid 的 Filter。具体步骤如下:

    创建自定义的 Filter 类
    首先,你需要创建一个自定义的 Filter 类。这个类需要继承 com.alibaba.druid.filter.FilterAdapter 类,并实现相应的方法。例如,下面是一个简单的自定义 Filter 类:

    java
    Copy
    public class MyFilter extends FilterAdapter {
    @Override
    public void init(DataSourceProxy dataSourceProxy) {
    // 这里可以做一些初始化操作
    }

    @Override
    public void destroy() {
        // 这里可以做一些清理操作
    }
    

    }
    在配置文件中添加 druid.filters 属性
    接下来,你需要在配置文件中添加 druid.filters 属性,并将自定义的 Filter 类添加到列表中。例如,下面是一个示例配置:

    yaml
    Copy
    spring:
    datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
    filters: stat,wall,log4j,myFilter

      # 自定义的 Filter 类名
      filter.myFilter.class-name: com.example.MyFilter
    

    在这个配置中,我们在 druid.filters 属性中添加了自定义的 Filter 类名 myFilter,并通过 filter.myFilter.class-name 属性指定了该类的完整类名。

    配置自定义的 Filter 属性
    如果你的自定义 Filter 类需要一些属性配置,你可以在配置文件中添加相应的属性。例如,如果你的自定义 Filter 类需要一个名为 myProperty 的属性,你可以在配置文件中添加如下配置:

    yaml
    Copy
    spring:
    datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
    filters: stat,wall,log4j,myFilter
    filter.myFilter.class-name: com.example.MyFilter

      # 自定义的 Filter 属性
      filter.myFilter.myProperty: value
    

    在这个配置中,我们在 filter.myFilter.myProperty 属性中添加了自定义的属性。

    2023-07-30 13:14:45
    赞同 展开评论 打赏
  • 在这个配置参数中,"druid.stat.mergeSql"和"druid.stat.slowSqlMillis"两个参数是用来自定义StatFilter的。其中,"druid.stat.mergeSql"参数用来控制Druid连接池是否将多个连接池的统计信息合并到一个统计信息中,如果设置为true,则Druid连接池会将多个连接池的统计信息合并到一个统计信息中;"druid.stat.slowSqlMillis"参数用来控制Druid连接池是否检测慢SQL,如果设置为true,则Druid连接池会检测慢SQL,并将其标记为慢SQL。

    2023-07-11 10:24:30
    赞同 展开评论 打赏
  • 使用 V1.1.1 版本的DruidDataSourceBuilder,创建数据源后,自行添加自定义Filter。

    @Bean public DataSource dataSourceOne(Environment env){ DruidDataSource dataSource = DruidDataSourceBuilder .create() .build(env, "spring.datasource.druid"); dataSource.setProxyFilters(你的Filters); return dataSource; }

    原回答者GitHub用户lihengming

    2023-07-06 11:47:38
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载