@@ -1,42 +1,20 @@
package com.vs ;
import com.vs.common.util.rpc.handler.CustomArgumentResolver ;
import org.springframework.beans.factory.annotation.Value ;
import org.springframework.context.annotation.Configuration ;
import org.springframework.web.method.annotation.MapMethodProcessor ;
import org.springframework.web.method.support.HandlerMethodArgumentResolver ;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler ;
import org.springframework.web.servlet.HandlerExceptionResolver ;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer ;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter ;
import org.springframework.web.servlet.mvc.method.annotation.ViewNameMethodReturnValueHandler ;
import java.util.ArrayList ;
import java.util.Iterator ;
import java.util.List ;
@Configuration
public class VSResponseHandlerConfig implements WebMvcConfigurer {
private boolean useHandler = true ;
RequestMappingHandlerAdapter requestMappingHandlerAdapt er;
void init ( ) {
List < HandlerMethodReturnValueHandler > returnValueHandlers = this . requestMappingHandlerAdapter . getReturnValueHandlers ( ) ;
Iterator < HandlerMethodReturnValueHandler > iterator = returnValueHandlers . iterator ( ) ;
List < HandlerMethodReturnValueHandler > newProcessors = new ArrayList < > ( ) ;
while ( iterator . hasNext ( ) ) {
HandlerMethodReturnValueHandler next = iterator . next ( ) ;
//在controller中直接返回map, 不被默认的MapMethodProcessor拦截
if ( next instanceof MapMethodProcessor | |
//在controller中直接返回String, 不被默认的ViewNameMethodReturnValueHandler拦截
next instanceof ViewNameMethodReturnValueHandler ) {
continue ;
} else {
newProcessors . add ( next ) ;
}
}
this . requestMappingHandlerAdapter . setReturnValueHandlers ( newProcessors ) ;
}
@Value ( " ${com.toco.response.handler:true} " )
private boolean useHandl er;
@Override
public void addArgumentResolvers ( List < HandlerMethodArgumentResolver > resolvers ) {