druid 启用wall 后如何配置允许注释和多SQL执行?

2021-03-26 18:58发布

3条回答
Sunny
2021-03-29 16:31

@Configuration

public class DruidConfig {


    @ConditionalOnClass(DruidDataSource.class)

    @ConditionalOnProperty(name = "spring.datasource.type",

            havingValue = "com.alibaba.druid.pool.DruidDataSource",

            matchIfMissing = true)

    static class Druid extends DruidConfig{


        @Bean

        @ConfigurationProperties("spring.datasource.druid")

        public DruidDataSource dataSource(DataSourceProperties properties){

            DruidDataSource druidDataSource = (DruidDataSource) properties.initializeDataSourceBuilder()

                    .type(DruidDataSource.class).build();

            DatabaseDriver databaseDriver = DatabaseDriver.fromJdbcUrl(properties.determineUrl());

            String validationQuery = databaseDriver.getValidationQuery();

            if(validationQuery != null){

                druidDataSource.setValidationQuery(validationQuery);

            }

            return druidDataSource;

        }


        @Bean

        public WallFilter wallFilter(){

            WallFilter wallFilter = new WallFilter();

            wallFilter.setConfig(wallConfig());

            return wallFilter;

        }


        @Bean

        public WallConfig wallConfig(){

            WallConfig wallConfig = new WallConfig();

            wallConfig.setMultiStatementAllow(true);//允许一次执行多条语句

            wallConfig.setNoneBaseStatementAllow(true);//允许一次执行多条语句

            return wallConfig;

        }

    }

}



一周热门 更多>