springboot挂载多个WebMvcConfigurationSupport不起作用解决

     问题:在springboot中使用多个继承WebMvcConfigurationSupport的类是行不通的,而且使用注解@configuration去加载配置类只能挂载一个继承WebMvcConfigurationSupport,如果有多个而且在不同级包中,那么会优先加载最外层包的配置类,其他继承WebMvcConfigurationSupport的类是不会加载,原因:WebMvcConfigurationSupport调用模板类resourceHandlerMapping生成bean,其实是调用父类的模板类,去加载下一个发现已经有了就不会调用resourceHandlerMapping(bean的id相同).

 

 

 

解决办法:都实现父类 webMvcConfigurer 接口 ,这样都能挂载

    

package com.win.hehui.sys.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.List;

@Order(2)
@Configuration
public class UrlMatchConfig implements WebMvcConfigurer {

//    @Override
//    public void configurePathMatch(PathMatchConfigurer configurer) {
//        // setUseSuffixPatternMatch 后缀模式匹配
//        configurer.setUseSuffixPatternMatch(true);
//        // setUseTrailingSlashMatch 自动后缀路径模式匹配
//        configurer.setUseTrailingSlashMatch(true);
//    }
//
//    /**
//     * 设置匹配*.action后缀请求
//     *
//     * @param dispatcherServlet
//     * @return
//     */
//    @Bean
//    public ServletRegistrationBean servletRegistrationBean(DispatcherServlet dispatcherServlet) {
//        ServletRegistrationBean servletServletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
//        // 参数接受可变类型的多个参数支持多种后缀的匹配
//        servletServletRegistrationBean.addUrlMappings("*.action", "*.do");
//        return servletServletRegistrationBean;
//    }
//
//    @Override
//    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
//    }

    @Autowired
    private UserMethodArgumentResolver userMethodArgumentResolver;

    /**
     * 参数解析器
     *
     * @param argumentResolvers
     */
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(userMethodArgumentResolver);
        System.out.println("3====================addArgumentResolvers===========================");
    }

}

 

注意: 如果一个实现父类(webMvcConfigurer),继承子类(WebMvcConfigurationSupport),那么会优先加载子类,父类不会加载......

 
posted @ 2021-10-26 16:49  我会唱小星星  阅读(765)  评论(0编辑  收藏  举报