mvc:resources 的注解配置替换 - Spring

Posted

技术标签:

【中文标题】mvc:resources 的注解配置替换 - Spring【英文标题】:Annotation Configuration Replacement for mvc:resources - Spring 【发布时间】:2013-01-29 11:33:00 【问题描述】:

我正在尝试升级我的 spring mvc 项目以利用新的注释并摆脱我的 xml。以前我在web.xml 中加载我的静态资源:

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

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

是否有注释或新配置可以将这些资源拉回而不必使用 xml?

【问题讨论】:

【参考方案1】:

春季 3 和 4:

一种方法是让您的配置类扩展WebMvcConfigurerAdapter,然后重写以下方法:

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

【讨论】:

这个答案是完全正确的。但是,如果您在添加后遇到问题(就像我一样),请记住您可能仍需要此处描述的默认 servlet 处理程序:***.com/a/17013442/2047962 赞成答案。如果你能添加解释就更好了。这对初学者来说会很好。 @Menuka 说明:每个以“/resources/**”路径开头的请求都会映射到“/resources/”文件夹中的文件。【参考方案2】:

春天 5

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

例如:

@Configuration
@EnableWebMvc
public class MyApplication implements WebMvcConfigurer 

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

查看已弃用的消息:WebMvcConfigurerAdapter

【讨论】:

以上是关于mvc:resources 的注解配置替换 - Spring的主要内容,如果未能解决你的问题,请参考以下文章

myeclipse springmvc 开发 mvc:resources 标签报错!网上的方法都试过了,均无效。

Spring 注解开发 -- Spring新注解(完全替换Spring配置文件 使用配置类)

<mvc:resources; 标签的使用

Spring v3 找不到元素“mvc:resources”的声明

基于注解的AOP配置

Spring IoC 容器配置(半注解方式 )