package cn.com.goldenwater.dcproj.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import com.alibaba.druid.wall.WallConfig; import com.alibaba.druid.wall.WallFilter; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.env.Environment; import javax.servlet.Filter; import javax.servlet.Servlet; import javax.sql.DataSource; import java.util.*; @Configuration @MapperScan("cn.com.goldenwater.dcproj.dao") public class DruidConfiguration { @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource.druid") @Primary public DataSource testDataSource(Environment environment) { return DruidDataSourceBuilder .create() .build(environment, "spring.datasource.druid."); } //使用连接池dataSource //导入durid数据源 // @ConfigurationProperties(prefix = "spring.datasource") // @Bean // public DataSource druid() { // DruidDataSource druidDataSource = new DruidDataSource(); // List filterList = new ArrayList<>(); // //filterList.add(wallFilter()); // druidDataSource.setProxyFilters(filterList); // //return druidDataSource; // return new DruidDataSource(); // } //如果需要开启wall监控,同时允许multiStatementAllow,就不要在application.yml中配置filter,自己定义 //否则会出现异常:Cause: java.sql.SQLException: sql injection violation, multi-statement not allow : // @Bean // public WallFilter wallFilter() { // WallFilter wallFilter = new WallFilter();//配置一个监控的filter // wallFilter.setConfig(wallConfig());//导入我们的配置 // return wallFilter; // } // // @Bean // public WallConfig wallConfig() { // WallConfig config = new WallConfig(); // config.setMultiStatementAllow(true);//允许一次执行多条语句 // config.setNoneBaseStatementAllow(true);//允许非基本语句的其他语句 // return config; // } //配置监控 //1、先配置管理后台的servLet,访问的入口为/druid/ @Bean public ServletRegistrationBean statViewServlet() { ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); Map map = new HashMap<>(5); map.put("resetEnable", "false"); map.put("loginUsername", "gw_admin"); map.put("loginPassword", "gw_Sldc_123"); map.put("allow", "127.0.0.1"); map.put("deny", ""); bean.setInitParameters(map); return bean; } //2、配置WEB监控的filter @Bean public FilterRegistrationBean webStatFilter() { FilterRegistrationBean bean = new FilterRegistrationBean<>(); bean.setFilter(new WebStatFilter()); Map map = new HashMap<>(); map.put("exclusions", "*.js,*.css,/druid/*"); //拦截所有请求 bean.setUrlPatterns(Arrays.asList("/*")); bean.setInitParameters(map); return bean; } }