替代mvc:resources的注释配置 - Spring

79

我正在尝试升级我的Spring MVC项目,利用新的注释并摆脱XML。之前我在我的web.xml中使用以下行代码加载静态资源:

<mvc:resources mapping="/resources/**" location="/resources/" /> 

现在,我正在使用WebApplicationInitializer类和@EnableWebMvc注释启动我的服务,而无需任何xml文件,但似乎无法弄清如何加载我的资源。

有没有注释或新配置可以将这些资源重新引入,而不必使用xml?

2个回答

122

对于Spring 3和4:

一种实现方法是让你的配置类继承 WebMvcConfigurerAdapter ,然后重写以下方法:

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}

5
这个答案完全正确。然而,如果你在添加这个后仍然遇到问题(像我一样),请记得你可能还需要一个默认的servlet处理器,可以在这里找到描述:https://dev59.com/hWYq5IYBdhLWcg3wrSWs#17013442 - RustyTheBoyRobot
点赞这个答案。如果您能添加解释,那对于初学者来说会更好。 - Menuka Ishan
4
@Menuka 解释:以“/resources/**”路径开头的每个请求都将映射到“/resources/”文件夹中的文件。 - Krystian

25

Spring 5

从Spring 5开始,正确的做法是简单实现WebMvcConfigurer接口。

例如:

@Configuration
@EnableWebMvc
public class MyApplication implements WebMvcConfigurer {

    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
}

请参考此链接查看已弃用信息:WebMvcConfigurerAdapter


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接