| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package com.zhiqiyun.open.config;
- import com.fasterxml.jackson.core.JsonGenerator;
- import com.fasterxml.jackson.databind.DeserializationFeature;
- import com.fasterxml.jackson.databind.JsonSerializer;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.SerializerProvider;
- import com.fasterxml.jackson.databind.module.SimpleModule;
- import com.zhiqiyun.open.core.enmus.IBaseEnum;
- import com.zhiqiyun.open.utils.ServletContext;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.converter.HttpMessageConverter;
- import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
- import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
- import org.springframework.lang.NonNull;
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.config.annotation.CorsRegistry;
- import org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.util.List;
- /**
- * 系统启动配置
- *
- * @author jtoms
- */
- @Slf4j
- @Configuration
- public class WebMvcConfig extends DelegatingWebMvcConfiguration {
- @Autowired
- private OauthInterceptor oauthInterceptor;
- @Override
- protected void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/**").addResourceLocations("classpath:/public/");
- super.addResourceHandlers(registry);
- }
- @Override
- public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
- converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
- ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build();
- objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
- SimpleModule module = new SimpleModule();
- module.addSerializer(IBaseEnum.class, new JsonSerializer<IBaseEnum>() {
- @Override
- public void serialize(IBaseEnum value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeStartObject();
- gen.writeObjectField("value", value.getValue());
- gen.writeStringField("text", value.getText());
- gen.writeStringField("name", value.getName());
- gen.writeEndObject();
- }
- });
- objectMapper.registerModule(module);
- MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
- converters.add(converter);
- log.info("{}", converters.size());
- super.configureMessageConverters(converters);
- }
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(new HandlerInterceptor() {
- @Override
- public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) {
- ServletContext.init(request, response);
- return true;
- }
- @Override
- public void afterCompletion(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler, Exception ex) {
- ServletContext.clean();
- }
- }).addPathPatterns("/**").excludePathPatterns("/static/**", "/index.html");
- registry.addInterceptor(this.oauthInterceptor).addPathPatterns("/**").excludePathPatterns("/static/**", "/index.html");
- super.addInterceptors(registry);
- }
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**")
- .allowedOriginPatterns("*")
- .allowCredentials(true)
- .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH")
- .maxAge(3600);
- super.addCorsMappings(registry);
- }
- }
|