b1ec78e295bac17d376fabdc29e9097e5f92f3e1.svn-base 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package cn.com.goldenwater.dcproj.config;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
  4. import com.alibaba.druid.support.http.StatViewServlet;
  5. import com.alibaba.druid.support.http.WebStatFilter;
  6. import com.alibaba.druid.wall.WallConfig;
  7. import com.alibaba.druid.wall.WallFilter;
  8. import org.mybatis.spring.annotation.MapperScan;
  9. import org.springframework.boot.context.properties.ConfigurationProperties;
  10. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  11. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.context.annotation.Primary;
  15. import org.springframework.core.env.Environment;
  16. import javax.servlet.Filter;
  17. import javax.servlet.Servlet;
  18. import javax.sql.DataSource;
  19. import java.util.*;
  20. @Configuration
  21. @MapperScan("cn.com.goldenwater.dcproj.dao")
  22. public class DruidConfiguration {
  23. @Bean(name = "dataSource")
  24. @ConfigurationProperties(prefix = "spring.datasource.druid")
  25. @Primary
  26. public DataSource testDataSource(Environment environment) {
  27. return DruidDataSourceBuilder
  28. .create()
  29. .build(environment, "spring.datasource.druid.");
  30. }
  31. //使用连接池dataSource
  32. //导入durid数据源
  33. // @ConfigurationProperties(prefix = "spring.datasource")
  34. // @Bean
  35. // public DataSource druid() {
  36. // DruidDataSource druidDataSource = new DruidDataSource();
  37. // List filterList = new ArrayList<>();
  38. // //filterList.add(wallFilter());
  39. // druidDataSource.setProxyFilters(filterList);
  40. // //return druidDataSource;
  41. // return new DruidDataSource();
  42. // }
  43. //如果需要开启wall监控,同时允许multiStatementAllow,就不要在application.yml中配置filter,自己定义
  44. //否则会出现异常:Cause: java.sql.SQLException: sql injection violation, multi-statement not allow :
  45. // @Bean
  46. // public WallFilter wallFilter() {
  47. // WallFilter wallFilter = new WallFilter();//配置一个监控的filter
  48. // wallFilter.setConfig(wallConfig());//导入我们的配置
  49. // return wallFilter;
  50. // }
  51. //
  52. // @Bean
  53. // public WallConfig wallConfig() {
  54. // WallConfig config = new WallConfig();
  55. // config.setMultiStatementAllow(true);//允许一次执行多条语句
  56. // config.setNoneBaseStatementAllow(true);//允许非基本语句的其他语句
  57. // return config;
  58. // }
  59. //配置监控
  60. //1、先配置管理后台的servLet,访问的入口为/druid/
  61. @Bean
  62. public ServletRegistrationBean statViewServlet() {
  63. ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
  64. Map<String, String> map = new HashMap<>(5);
  65. map.put("resetEnable", "false");
  66. map.put("loginUsername", "gw_admin");
  67. map.put("loginPassword", "gw_Sldc_123");
  68. map.put("allow", "127.0.0.1");
  69. map.put("deny", "");
  70. bean.setInitParameters(map);
  71. return bean;
  72. }
  73. //2、配置WEB监控的filter
  74. @Bean
  75. public FilterRegistrationBean webStatFilter() {
  76. FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
  77. bean.setFilter(new WebStatFilter());
  78. Map<String, String> map = new HashMap<>();
  79. map.put("exclusions", "*.js,*.css,/druid/*");
  80. //拦截所有请求
  81. bean.setUrlPatterns(Arrays.asList("/*"));
  82. bean.setInitParameters(map);
  83. return bean;
  84. }
  85. }