package com.mzl.flower.base.interceptor;
|
|
import com.google.common.collect.ImmutableList;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.core.MethodParameter;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.server.ServerHttpRequest;
|
import org.springframework.http.server.ServerHttpResponse;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.servlet.LocaleResolver;
|
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
|
|
import java.util.List;
|
|
@ControllerAdvice
|
public class CodeDecorateInterceptor implements ResponseBodyAdvice<Object> {
|
|
@Autowired
|
private CodeDecorator codeDecorator;
|
|
@Autowired
|
private LocaleResolver localeResolver;
|
|
@Override
|
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> clazz) {
|
String methodName = methodParameter.getMethod().getName();
|
List<String> skipList = ImmutableList.of("api-docs");
|
return !skipList.contains(methodName);
|
}
|
|
@Override
|
public Object beforeBodyWrite(Object object, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> clazz
|
, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
|
return codeDecorator.decorate(object);
|
}
|
}
|