All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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