建议在druid-spring-boot-starter中增加WallConfig的配置项。目前使用的druid-spring-boot-starter没有办法自定义配置WallConfig。
原提问者GitHub用户cxjava
目前的 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
中使用。
目前的 druid-spring-boot-starter 没有提供自定义配置 WallConfig 的选项。如果你需要自定义 WallConfig 的配置项,可以考虑通过编写自定义配置类的方式来实现。
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。