zoukankan      html  css  js  c++  java
  • WebMvcConfigurer类的用法

    /*
     *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
     *
     *  Redistribution and use in source and binary forms, with or without
     *  modification, are permitted provided that the following conditions are met:
     *
     *  Redistributions of source code must retain the above copyright notice,
     *  this list of conditions and the following disclaimer.
     *  Redistributions in binary form must reproduce the above copyright
     *  notice, this list of conditions and the following disclaimer in the
     *  documentation and/or other materials provided with the distribution.
     *  Neither the name of the dreamlu.net developer nor the names of its
     *  contributors may be used to endorse or promote products derived from
     *  this software without specific prior written permission.
     *  Author: Chill 庄骞 (smallchill@163.com)
     */
    package org.springblade.common.config;
    
    
    import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
    import org.springblade.common.filter.PreviewFilter;
    import org.springblade.common.interceptor.SessionInterceptor;
    import org.springblade.core.secure.registry.SecureRegistry;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    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 javax.annotation.Resource;
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    /**
     * Blade配置
     *
     * @author Chill
     */
    @Configuration
    public class BladeConfiguration implements WebMvcConfigurer {
        @Resource
        SessionInterceptor sessionInterceptor;
        @Value("${file.path}")
        private String filePath;
    
        @Bean
        public SecureRegistry secureRegistry() {
            SecureRegistry secureRegistry = new SecureRegistry();
            secureRegistry.setEnabled(true);
            secureRegistry.excludePathPatterns("/blade-auth/**");
            secureRegistry.excludePathPatterns("/blade-log/**");
            secureRegistry.excludePathPatterns("/blade-system/menu/routes");
            secureRegistry.excludePathPatterns("/blade-system/menu/auth-routes");
            secureRegistry.excludePathPatterns("/blade-system/menu/top-menu");
            secureRegistry.excludePathPatterns("/blade-system/tenant/info");
            secureRegistry.excludePathPatterns("/blade-flow/process/resource-view");
            secureRegistry.excludePathPatterns("/blade-flow/process/diagram-view");
            secureRegistry.excludePathPatterns("/blade-flow/manager/check-upload");
            secureRegistry.excludePathPatterns("/doc.html");
            secureRegistry.excludePathPatterns("/js/**");
            secureRegistry.excludePathPatterns("/webjars/**");
            secureRegistry.excludePathPatterns("/swagger-resources/**");
            secureRegistry.excludePathPatterns("/druid/**");
            return secureRegistry;
        }
    
        @Bean
        @ConditionalOnProperty(value = "blade.preview.enabled", havingValue = "true")
        public PreviewFilter previewFilter() { //这个是注册过滤器
            return new PreviewFilter();
        }
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {//解决跨域的问题
            registry.addMapping("/cors/**")
                .allowedOrigins("*")
                .allowedHeaders("*")
                .allowedMethods("*")
                .maxAge(3600)
                .allowCredentials(true);
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {//将访问路径映射到磁盘路径
    
    //        registry.addResourceHandler("/upload/**").addResourceLocations("file:d:/gangtong/upload/drugferment/resource/");
            registry.addResourceHandler("/file/**").addResourceLocations(filePath);
            //registry.addResourceHandler("/showImg/**").addResourceLocations("file:d:/gangtong/upload/drugferment/");
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {//添加拦截器
    
            registry.addInterceptor(sessionInterceptor).addPathPatterns("/**")
                    .excludePathPatterns("/blade-auth/oauth/token","/blade-auth/oauth/captcha","/blade-auth/oauth/logout");
    
        }
    
        @Bean
        public Jackson2ObjectMapperBuilderCustomizer builderCustomizer() { // jackson的全局配置 日期和long变成string(解决mybatis-plus 生成主健到前台失去精度的问题)
            DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            DateTimeFormatter dateTimeSerializeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            DateTimeFormatter dateTimeDeserializeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
            return builder -> {
                // 所有Long类型转换成String到前台
                builder.serializerByType(Long.class, ToStringSerializer.instance);
                builder.serializerByType(LocalDateTime.class, new LocalDateSerializer(dateTimeSerializeFormatter));
            };
        }
    
    }
  • 相关阅读:
    正则表达式
    vim
    linux 6 安装 zabbix.3服务
    内核链表学习记录
    rpc-protobuff-实现
    Qedis实现
    try-catch 异常捕获学习
    协程的学习和使用
    惊群的学习研究 这人的博客还有其他干货
    互斥锁与自旋锁的区别测试代码
  • 原文地址:https://www.cnblogs.com/dkws/p/13208427.html
Copyright © 2011-2022 走看看