开发者社区> 问答> 正文

druid-spring-boot-starter增加WallConfig的配置项

建议在druid-spring-boot-starter中增加WallConfig的配置项。目前使用的druid-spring-boot-starter没有办法自定义配置WallConfig。

原提问者GitHub用户cxjava

展开
收起
山海行 2023-07-05 20:53:10 168 0
3 条回答
写回答
取消 提交回答
  • 目前的 druid-spring-boot-starter 并没有提供直接配置 WallConfig 的选项。如果你需要自定义 WallConfig 的配置项,可以考虑通过编写自定义配置类的方式来实现。

    你可以在 Spring Boot 的配置文件中添加如下配置:

    spring:
      datasource:
        druid:
          wall:
            config:
              multiStatementAllow: false
              truncateAllow: true
    

    然后,在你的应用程序中创建一个自定义配置类,将 WallConfig 配置为 @Bean

    import com.alibaba.druid.wall.WallFilter;
    import com.alibaba.druid.wall.WallConfig;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class DruidConfig {
    
        @Bean
        @ConfigurationProperties("spring.datasource.druid.wall.config")
        public WallConfig wallConfig(){
            return new WallConfig();
        }
    
        @Bean
        public WallFilter wallFilter(){
            WallFilter filter = new WallFilter();
            filter.setConfig(wallConfig());
            return filter;
        }
    }
    

    这样就可以自定义 WallConfig 的配置项,并注入到 WallFilter 中使用。

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

    目前的 druid-spring-boot-starter 没有提供自定义配置 WallConfig 的选项。如果你需要自定义 WallConfig 的配置项,可以考虑通过编写自定义配置类的方式来实现。

    2023-07-30 13:13:23
    赞同 展开评论 打赏
  • WallConfig的配置项太多了,推荐你在Spring Boot 中使用下面这种方式来自定义配置WallFilter。

    spring.datasource.druid.wall.config.multiStatementAllow=false spring.datasource.druid.wall.config.truncateAllow=true

    @Bean
    @ConfigurationProperties("spring.datasource.druid.wall.config")
    public WallConfig wallConfig(){
        return new WallConfig();
    }
    
    @Bean
    public WallFilter wallFilter(){
        WallFilter filter = new WallFilter();
        filter.setConfig(wallConfig());
        filter.setDbType("mysql");
        return filter;
    }
    
    @Bean
    public DataSource dataSource(Environment env){
        DruidDataSource dataSource = DruidDataSourceBuilder
                .create()
                .build(env,"spring.datasource.druid.");
        List<Filter> filters = new ArrayList<>();
        filters.add(wallFilter());
        dataSource.setProxyFilters(filters);
        return dataSource;
    }
    

    原回答者GitHub用户lihengming

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

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载