| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package com.ydtech.config;
- import com.baomidou.mybatisplus.annotation.DbType;
- import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
- import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
- import com.ydtech.aop.DynamicNameAspect;
- import com.ydtech.aop.DynamicTableNameHandler;
- import com.ydtech.aop.RequestStringParamHandlerMethodArgumentResolver;
- import com.ydtech.components.CorsInterceptor;
- import com.ydtech.components.TokenInterceptor;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.converter.HttpMessageConverter;
- import org.springframework.http.converter.StringHttpMessageConverter;
- import org.springframework.web.method.support.HandlerMethodArgumentResolver;
- 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.nio.charset.StandardCharsets;
- import java.util.List;
- @Configuration
- public class MvcConfig implements WebMvcConfigurer {
- @Value("${apk.path}")
- private String apkPath;
- @Value("${upload.file.path}")
- private String uploadFilePath;
- @Value("${upload.file.url}")
- private String uploadFileUrl;
- @Resource
- private CorsInterceptor corsInterceptor;
- @Resource
- private TokenInterceptor tokenInterceptor;
- @Bean
- public HttpMessageConverter<String> responseBody() {
- return new StringHttpMessageConverter(StandardCharsets.UTF_8);
- }
- @Override
- public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
- converters.add(responseBody());
- }
- // @Override
- // public void addCorsMappings(CorsRegistry registry) {
- // registry.addMapping("/**") // 允许跨域访问的路径
- // .allowedOriginPatterns("*")
- //// .allowedOrigins("*") // 允许跨域访问的源
- // .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") // 允许请求方法
- // .maxAge(168000) // 预检间隔时间
- // .allowedHeaders("*") // 允许头部设置
- // .allowCredentials(false); // 是否发送cookie
- // }
- // @Override
- // public void addCorsMappings(CorsRegistry registry) {
- // registry.addMapping("/**")
- // .allowedOriginPatterns("*")
- //// .allowedOrigins("*")
- //// .allowedMethods("*")
- // .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
- // .allowCredentials(true)
- // .maxAge(3600)
- // .allowedHeaders("*")
- // //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
- // .exposedHeaders("Authorization", "content-type");
- //
- // ;
- // }
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
- registry.addResourceHandler("/template/**").addResourceLocations("classpath:/template/");
- registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/app/android/**").addResourceLocations("file:" + apkPath);
- // 上传文件后路劲映射
- registry.addResourceHandler(uploadFileUrl + "**").addResourceLocations("file:" + uploadFilePath);
- }
- @Bean
- public PaginationInnerInterceptor paginationInnerInterceptor() {
- PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
- // 设置最大单页限制数量,默认 500 条,-1 不受限制
- paginationInterceptor.setMaxLimit(-1L);
- paginationInterceptor.setDbType(DbType.MYSQL);
- // 开启 count 的 join 优化,只针对部分 left join
- paginationInterceptor.setOptimizeJoin(true);
- return paginationInterceptor;
- }
- @Bean
- public DynamicNameAspect dynamicNameAspect() {
- return new DynamicNameAspect();
- }
- @Bean
- public TableNameHandler dynamicTableNameHandler() {
- return new DynamicTableNameHandler();
- }
- /**
- * 获取单个参数
- *
- * @param argumentResolvers 处理程序方法参数解析器
- */
- @Override
- public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
- argumentResolvers.add(new RequestStringParamHandlerMethodArgumentResolver());
- WebMvcConfigurer.super.addArgumentResolvers(argumentResolvers);
- }
- // 注册拦截器
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- // 跨域拦截器需放在最上面
- registry.addInterceptor(corsInterceptor).addPathPatterns("/**");
- //token拦截器
- registry.addInterceptor(tokenInterceptor.tokenInterceptor()).addPathPatterns("/**");
- }
- }
|