| | |
| | | import com.alibaba.fastjson.serializer.SerializerFeature; |
| | | import com.alibaba.fastjson.support.config.FastJsonConfig; |
| | | import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.terra.system.interceptor.AuthInterceptor; |
| | | import com.terra.system.service.all.SysService; |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.Ordered; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.http.converter.HttpMessageConverter; |
| | | import org.springframework.util.AntPathMatcher; |
| | | import org.springframework.web.context.request.RequestContextHolder; |
| | | import org.springframework.web.context.request.ServletRequestAttributes; |
| | | import org.springframework.web.servlet.config.annotation.*; |
| | | import reactor.core.Exceptions; |
| | | |
| | | import java.io.IOException; |
| | | import java.nio.charset.Charset; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | @Override |
| | | protected void addResourceHandlers(ResourceHandlerRegistry registry) { |
| | | registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); |
| | | registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); |
| | | //registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); |
| | | registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); |
| | | registry.addResourceHandler("/druid/**").addResourceLocations("classpath:/META-INF/resources/druid/"); |
| | | registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); |
| | | super.addResourceHandlers(registry); |
| | | } |
| | |
| | | protected void addInterceptors(InterceptorRegistry registry) { |
| | | registry.addInterceptor(getAuthBean()) |
| | | // .excludePathPatterns("/swagger", "/webjars/**", "/v2/**", "/sign/**") |
| | | //.excludePathPatterns("/v3/api-docs") |
| | | .addPathPatterns("/**"); |
| | | super.addInterceptors(registry); |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { |
| | | FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); |
| | | //FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); |
| | | FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter() { |
| | | @Override |
| | | protected void writeInternal(Object object, org.springframework.http.HttpOutputMessage outputMessage) |
| | | throws IOException, org.springframework.http.converter.HttpMessageNotWritableException { |
| | | ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); |
| | | if (attributes != null) { |
| | | String requestURI = attributes.getRequest().getRequestURI(); |
| | | if ("/v3/api-docs".equals(requestURI)) { // 排除 /v3/api-docs 路径 |
| | | // 使用默认的 JSON 序列化(如 Jackson),这里需要手动处理,不能直接调用 super.writeInternal |
| | | outputMessage.getBody().write(String.valueOf(object).getBytes()); |
| | | return; |
| | | } |
| | | } |
| | | super.writeInternal(object, outputMessage); // 其他路径使用 Fastjson2 处理 |
| | | } |
| | | }; |
| | | |
| | | FastJsonConfig config = new FastJsonConfig(); |
| | | config.setSerializerFeatures( |
| | | SerializerFeature.WriteNullListAsEmpty, |
| | |
| | | |
| | | converter.setFastJsonConfig(config); |
| | | converter.setDefaultCharset(StandardCharsets.UTF_8); |
| | | converter.setSupportedMediaTypes(Collections.singletonList( |
| | | MediaType.APPLICATION_JSON |
| | | )); |
| | | converters.add(converter); |
| | | } |
| | | } |