Spring Boot应用程序中的资源访问

时间:2015-05-06 20:38:39

标签: java spring jar

我有一个Spring启动Web应用程序(嵌入式Jetty Server)。所有Java代码和资源都打包在JAR中并部署在服务器上。但是,JAR外部有一个JSON文件,但它位于类路径中。 即

  

我的classpath是:/ usr / local / myserver /
  JSON文件位于:/usr/local/myserver/hello.json
  JAR位于:/usr/local/myserver/app.jar

当我点击网址时:https://IP:port/hello.json它会给我找不到" 404文件"。 提到的IP是存在所有文件和JAR的服务器。我相信默认资源路径是/ static / ..它在JAR中。那个'静态'中的任何文件目录可以访问。

我已配置:

@Configuration
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class StaticResourceConfiguration extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/hello.json").addResourceLocations("file://localhost/usr/local/myserver/");
    }

如何访问JSON文件?

2 个答案:

答案 0 :(得分:0)

如果“JSON”文件已在classpath中,那么为什么不使用classpath:前缀

classpath:/usr/local/myserver/

如果你使用file:/前缀,那么它使用URL类加载JSON file所以基本上你需要提供绝对路径位置,如

如果是windows

file:/usr/local/myserver 

答案 1 :(得分:0)

你需要使用"文件://"前缀+文件系统上的绝对目标" / usr / local / myserver /"。

registry.addResourceHandler("/hello.json")
        .addResourceLocations("file:///usr/local/myserver/");