| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package net.mingsoft.config;
- import java.util.Arrays;
- import org.springframework.aop.Advisor;
- import org.springframework.aop.support.DefaultPointcutAdvisor;
- import org.springframework.aop.support.JdkRegexpMethodPointcut;
- import org.springframework.boot.web.servlet.FilterRegistrationBean;
- import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
- import org.springframework.boot.web.servlet.ServletRegistrationBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.context.request.RequestContextListener;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- import com.alibaba.druid.pool.DruidDataSource;
- import com.alibaba.druid.support.http.StatViewServlet;
- import com.alibaba.druid.support.http.WebStatFilter;
- import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
- import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
- import net.mingsoft.basic.interceptor.ActionInterceptor;
- import cn.hutool.core.collection.CollectionUtil;
- @Configuration
- public class WebConfig implements WebMvcConfigurer {
-
- @Bean
- public ActionInterceptor actionInterceptor() {
- return new ActionInterceptor();
- }
- /**
- * 增加对rest api鉴权的spring mvc拦截器
- */
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- // 排除配置
- registry.addInterceptor(actionInterceptor()).excludePathPatterns(CollectionUtil.newLinkedList("/static/**"));
- }
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
- }
- /**
- * druidServlet注册
- */
- @Bean
- public ServletRegistrationBean druidServletRegistration() {
- ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet());
- registration.addUrlMappings("/druid/*");
- return registration;
- }
- /**
- * druid监控 配置URI拦截策略
- */
- @Bean
- public FilterRegistrationBean druidStatFilter() {
- FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
- // 添加过滤规则.
- filterRegistrationBean.addUrlPatterns("/*");
- // 添加不需要忽略的格式信息.
- filterRegistrationBean.addInitParameter("exclusions",
- "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid,/druid/*");
- // 用于session监控页面的用户名显示 需要登录后主动将username注入到session里
- filterRegistrationBean.addInitParameter("principalSessionName", "username");
- return filterRegistrationBean;
- }
- /**
- * druid数据库连接池监控
- */
- @Bean
- public DruidStatInterceptor druidStatInterceptor() {
- return new DruidStatInterceptor();
- }
- @Bean
- public JdkRegexpMethodPointcut druidStatPointcut() {
- JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
- String patterns = "cn.stylefeng.guns.modular.*.service.*";
- // 可以set多个
- druidStatPointcut.setPatterns(patterns);
- return druidStatPointcut;
- }
- /**
- * druid数据库连接池监控
- */
- @Bean
- public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() {
- BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator();
- beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class);
- beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor");
- return beanTypeAutoProxyCreator;
- }
- /**
- * druid 为druidStatPointcut添加拦截
- *
- * @return
- */
- @Bean
- public Advisor druidStatAdvisor() {
- return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
- }
- // /**
- // * xssFilter注册
- // */
- // @Bean
- // public FilterRegistrationBean xssFilterRegistration() {
- // XssFilter xssFilter = new XssFilter();
- // xssFilter.setUrlExclusion(Arrays.asList("/static/"));
- // FilterRegistrationBean registration = new FilterRegistrationBean(xssFilter);
- // registration.addUrlPatterns("/*");
- // return registration;
- // }
- /**
- * RequestContextListener注册
- */
- @Bean
- public ServletListenerRegistrationBean<RequestContextListener> requestContextListenerRegistration() {
- return new ServletListenerRegistrationBean<>(new RequestContextListener());
- }
- }
|