美文网首页
SpringBoot 2.0 WebMvcConfigurerA

SpringBoot 2.0 WebMvcConfigurerA

作者: 双流小二郎 | 来源:发表于2018-09-26 17:26 被阅读0次

    SpringBoot 2.0使用Spring 5,Spring 5弃用了WebMvcConfigurerAdapter

    1. WebMvcConfigurerAdapter过时

    项目中自定义静态文件目录时,按照原来方法需要继承WebMvcConfigurerAdapter类,后面发现IDEA提示该类已经过时。

    1.JPG
    搜索之后大家都建议使用WebMvcConfigurationSupport来代替。

    2. 继承WebMvcConfigurationSupport后自动配置不生效问题,静态文件无法访问

    按照第一步修改继承对象之后,又做了很多开发,测试突然发现网页没法访问了。困扰许久,步步回退代码后发现是因为这个修改,手动哭泣。
    自动配置的静态资源路径:

    • classpath:/META/resources/
    • classpath:/resources/
    • classpath:/static/
    • classpath:/public/

    自动配置类WebMvcAutoConfiguration 代码中有个注释@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})

    @ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
    @ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
    @AutoConfigureOrder(-2147483638)
    @AutoConfigureAfter({DispatcherServletAutoConfiguration.class, ValidationAutoConfiguration.class})
    public class WebMvcAutoConfiguration {
        public static final String DEFAULT_PREFIX = "";
        public static final String DEFAULT_SUFFIX = "";
        private static final String[] SERVLET_LOCATIONS = new String[]{"/"};
    
        public WebMvcAutoConfiguration() {
        }
    
    

    @ConditionalOnMissingBean
    这个注解的意思是在项目类路径中缺少WebMvcConfigurationSupport类型的bean时该自动配置类才会生效

    一阵Google之后,改为实现WebMvcConfigurer接口。

    public class AppConfig implements WebMvcConfigurer {
        
    }
    

    3. 最终静态文件的处理

    最终写在了application.properties文件中

    demoProj.webapp.path=/home/appuser/demoProj/webapp/
    spring.mvc.static-path-pattern=/**
    spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\
      classpath:/static/,classpath:/public/,file:${demoProj.webapp.path}
    

    相关文章

      网友评论

          本文标题:SpringBoot 2.0 WebMvcConfigurerA

          本文链接:https://www.haomeiwen.com/subject/pqljoftx.html