首页 > 解决方案 > Spring Boot War 中来自 ${catalina.home} 的静态资源

问题描述

在我的 Spring MVC 项目中,我有

<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/, file:${catalina.home}/myresources/" />

配置为从多个位置提供静态资源。然而,在 Spring Boot 中,

@Configuration
public class ResourceConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/", "file:${catalina.home}/myresources/");
    }
}

没有按预期工作。请帮忙。

标签: javaspring-boot

解决方案


    @Configuration
public class ResourceConfig implements WebMvcConfigurer {

    private static final Log LOG = LogFactory.getLog(ResourceConfig.class);

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        String catalinaHome;
        try {
            catalinaHome = System.getenv("CATALINA_HOME");
        } catch (Exception e) {
            LOG.error(e);
            catalinaHome = "";
        }
        registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/", "file:" + catalinaHome + "/myresources/");    
    }
}

推荐阅读