使用Spring 4提供静态文件(注释)

时间:2017-03-20 16:16:42

标签: spring-mvc spring-boot

我有简单的Spring 4应用程序:

package proj;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我想从 / resources 文件夹中提供静态内容,我也提供了用于测试的文件 resources / 1.txt

我在根文件夹中创建了类应用程序,我还在根文件夹中的 config / 中创建了另一个文件夹 config / 创建了一个新类 WebMvcConfig 并添加了代码:

package proj.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

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

然后我尝试通过查询从 / resources 文件夹中获取文件 1.txt

  

http://localhost:8080/resources/1.txt

但是我找不到 404错误。我无法理解为什么它不起作用。

如果有人能帮助我解决这个问题,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

package proj.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/");    
    }
}

所以,我不知道为什么“classpath:”前缀对于这项工作至关重要。

默认情况下(如上面的评论所述)Spring从root URL提供静态服务。

例如localhost:8080/1.txt,但是如果你想改变Spring行为并且你遇到了和我一样的问题,那么只需尝试上面的代码。

此外,该链接可能很有用:https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot