WebConfig.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package net.mingsoft.config;
  2. import java.util.Arrays;
  3. import org.springframework.aop.Advisor;
  4. import org.springframework.aop.support.DefaultPointcutAdvisor;
  5. import org.springframework.aop.support.JdkRegexpMethodPointcut;
  6. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  7. import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
  8. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.web.context.request.RequestContextListener;
  12. import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
  13. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  14. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  15. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  16. import com.alibaba.druid.pool.DruidDataSource;
  17. import com.alibaba.druid.support.http.StatViewServlet;
  18. import com.alibaba.druid.support.http.WebStatFilter;
  19. import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
  20. import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
  21. import net.mingsoft.basic.interceptor.ActionInterceptor;
  22. import cn.hutool.core.collection.CollectionUtil;
  23. @Configuration
  24. public class WebConfig implements WebMvcConfigurer {
  25. @Bean
  26. public ActionInterceptor actionInterceptor() {
  27. return new ActionInterceptor();
  28. }
  29. /**
  30. * 增加对rest api鉴权的spring mvc拦截器
  31. */
  32. @Override
  33. public void addInterceptors(InterceptorRegistry registry) {
  34. // 排除配置
  35. registry.addInterceptor(actionInterceptor()).excludePathPatterns(CollectionUtil.newLinkedList("/static/**"));
  36. }
  37. @Override
  38. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  39. registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
  40. }
  41. /**
  42. * druidServlet注册
  43. */
  44. @Bean
  45. public ServletRegistrationBean druidServletRegistration() {
  46. ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet());
  47. registration.addUrlMappings("/druid/*");
  48. return registration;
  49. }
  50. /**
  51. * druid监控 配置URI拦截策略
  52. */
  53. @Bean
  54. public FilterRegistrationBean druidStatFilter() {
  55. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
  56. // 添加过滤规则.
  57. filterRegistrationBean.addUrlPatterns("/*");
  58. // 添加不需要忽略的格式信息.
  59. filterRegistrationBean.addInitParameter("exclusions",
  60. "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid,/druid/*");
  61. // 用于session监控页面的用户名显示 需要登录后主动将username注入到session里
  62. filterRegistrationBean.addInitParameter("principalSessionName", "username");
  63. return filterRegistrationBean;
  64. }
  65. /**
  66. * druid数据库连接池监控
  67. */
  68. @Bean
  69. public DruidStatInterceptor druidStatInterceptor() {
  70. return new DruidStatInterceptor();
  71. }
  72. @Bean
  73. public JdkRegexpMethodPointcut druidStatPointcut() {
  74. JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
  75. String patterns = "cn.stylefeng.guns.modular.*.service.*";
  76. // 可以set多个
  77. druidStatPointcut.setPatterns(patterns);
  78. return druidStatPointcut;
  79. }
  80. /**
  81. * druid数据库连接池监控
  82. */
  83. @Bean
  84. public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() {
  85. BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator();
  86. beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class);
  87. beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor");
  88. return beanTypeAutoProxyCreator;
  89. }
  90. /**
  91. * druid 为druidStatPointcut添加拦截
  92. *
  93. * @return
  94. */
  95. @Bean
  96. public Advisor druidStatAdvisor() {
  97. return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
  98. }
  99. // /**
  100. // * xssFilter注册
  101. // */
  102. // @Bean
  103. // public FilterRegistrationBean xssFilterRegistration() {
  104. // XssFilter xssFilter = new XssFilter();
  105. // xssFilter.setUrlExclusion(Arrays.asList("/static/"));
  106. // FilterRegistrationBean registration = new FilterRegistrationBean(xssFilter);
  107. // registration.addUrlPatterns("/*");
  108. // return registration;
  109. // }
  110. /**
  111. * RequestContextListener注册
  112. */
  113. @Bean
  114. public ServletListenerRegistrationBean<RequestContextListener> requestContextListenerRegistration() {
  115. return new ServletListenerRegistrationBean<>(new RequestContextListener());
  116. }
  117. }