
com.sprint.framework.web.config.WebMvcConfiguration Maven / Gradle / Ivy
The newest version!
package com.sprint.framework.web.config;
import com.sprint.framework.core.common.utils.Safes;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.web.accept.ContentNegotiationManager;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration;
import org.springframework.web.servlet.handler.HandlerExceptionResolverComposite;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
/**
* @author hongfeng.li
* @since 2023/2/28
*/
public class WebMvcConfiguration extends DelegatingWebMvcConfiguration {
@Nonnull
@Bean
public HandlerExceptionResolver handlerExceptionResolver(@Qualifier("mvcContentNegotiationManager") ContentNegotiationManager contentNegotiationManager) {
List exceptionResolvers = new ArrayList<>();
configureHandlerExceptionResolvers(exceptionResolvers);
addDefaultHandlerExceptionResolvers(exceptionResolvers, contentNegotiationManager);
extendHandlerExceptionResolvers(exceptionResolvers);
HandlerExceptionResolverComposite composite = new HandlerExceptionResolverComposite();
composite.setOrder(0);
composite.setExceptionResolvers(exceptionResolvers);
return composite;
}
@Nonnull
@Override
protected RequestMappingHandlerAdapter createRequestMappingHandlerAdapter() {
return new RequestMappingHandlerAdapter() {
@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();
List returnValueHandlers = new ArrayList<>(Safes.of(getReturnValueHandlers()));
List customHandlers = Safes.of(getCustomReturnValueHandlers());
returnValueHandlers.removeAll(customHandlers);
returnValueHandlers.addAll(0, customHandlers);
setReturnValueHandlers(returnValueHandlers);
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy