package cn.huge.base.config; import cn.huge.base.common.utils.SpringContextUtil; import org.springframework.context.annotation.Configuration; import org.springframework.core.MethodParameter; import org.springframework.lang.Nullable; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; 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 java.util.List; /** * @title: MVC配置 * @description: MVC配置 * @company: hugeinfo * @author: liyj * @time: 2021-11-05 16:51:48 * @version: 1.0.0 */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { } // @Override // public void addCorsMappings(CorsRegistry registry) { // registry.addMapping("/**") // .allowedOrigins("*") // .allowedHeaders("*") // .allowCredentials(true) // .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH") // .maxAge(3600); // } /** * 静态资源访问 * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("static/**").addResourceLocations("classpath:/static/"); } /** * 参数解析 * @param resolvers */ @Override public void addArgumentResolvers(List resolvers) { resolvers.add(new HandlerMethodArgumentResolver() { @Override public boolean supportsParameter(MethodParameter parameter) { if (parameter.hasParameterAnnotation(CurrentUser.class)) { return true; } return false; } @Nullable @Override public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { String userId = webRequest.getHeader("Authorization-userId"); if(userId == null){ throw new IllegalArgumentException("userId不能为空"); // //开发环境不校验 // if (SpringContextUtil.checkDev()){ // userId = "2204221720151007"; // }else { // throw new IllegalArgumentException("userId不能为空"); // } } return userId; } }); resolvers.add(new HandlerMethodArgumentResolver() { @Override public boolean supportsParameter(MethodParameter parameter) { if (parameter.hasParameterAnnotation(CurrentCust.class)) { return true; } return false; } @Nullable @Override public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception { String custId = webRequest.getHeader("Authorization-custId"); if(custId == null){ throw new IllegalArgumentException("custId不能为空"); // //开发环境不校验 // if (SpringContextUtil.checkDev()){ // custId = "2204121717531081"; // }else { // throw new IllegalArgumentException("custId不能为空"); // } } return custId; } }); } } /** * -------------------_ooOoo_------------------- * ------------------o8888888o------------------ * ------------------88" . "88------------------ * ------------------(| -_- |)------------------ * ------------------O\ = /O------------------ * ---------------____/`---'\____--------------- * -------------.' \\| |// `.------------- * ------------/ \\||| : |||// \------------ * -----------/ _||||| -:- |||||- \----------- * -----------| | \\\ - /// | |----------- * -----------| \_| ''\---/'' | |----------- * -----------\ .-\__ `-` ___/-. /----------- * ---------___`. .' /--.--\ `. . __---------- * ------."" '< `.___\_<|>_/___.' >'"".------- * -----| | : `- \`.;`\ _ /`;.`/ - ` : | |----- * -----\ \ `-. \_ __\ /__ _/ .-` / /----- * ======`-.____`-.___\_____/___.-`____.-'====== * -------------------`=---=' * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ---------佛祖保佑---hugeinfo---永无BUG---------- */