我有简单的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 :
但是我找不到 404错误。我无法理解为什么它不起作用。
如果有人能帮助我解决这个问题,我将非常感激。
答案 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