当前位置: 首页 > 知识库问答 >
问题:

Spring引导服务静态内容:addResourceLocations vs静态位置

景才英
2023-03-14

我有一个标准的Spring Boot应用程序,并尝试提供一些静态内容。我想将位置更改为文件系统上的特定文件夹。这些似乎是最常见的方法:

在application.yaml设置路径

spring:
  resources:
    static-locations: "file:/here/some/path"

使用WebMVCConfiguer

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/**")
            .addResourceLocations("file:/here/some/path");
    }
}

我的问题是:第一种方法有效,第二种方法无效,我不知道为什么。有什么提示吗?

设置“静态位置”和“addResourceLocations”之间有区别吗?调试的起点是什么?

我想使用第二个,因为我想根据特定条件设置路径。谢谢

共有3个答案

白子默
2023-03-14

附加此注释

@启用WebMVC

在MvcConfig类中。试试看,它会解决你的问题。

卫增
2023-03-14

我注意到它实际上是和

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/**")
            .addResourceLocations("file:/here/some/path");
    }
}

但出于某种原因,重定向到索引。html被禁用(这是相当意外的行为)。所以我需要手动添加它。

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/**")
            .addResourceLocations("file:/here/some/path");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
    }
}
胡禄
2023-03-14

尝试将尾随斜杠添加到“file:/here/more/path”

当您使用“spring.resources.static位置”时,它会自动为您完成org.springframework.boot.autoconfigure.web.ResourceProperties#appendSlashIfNecessary

 类似资料:
  • 主要内容:1. 根目录和索引文件,2. 尝试几个选项,3. 优化NGINX服务内容的速度本节介绍如何使用NGINX来提供静态内容服务,定义搜索路径以查找请求的文件的方法,以及如何设置索引文件。 在这个部分,我们主要涉及以下几个方面的内容: 根目录和索引文件 尝试几个选项 优化NGINX服务内容的速度 1. 根目录和索引文件 root指令指定将用于搜索文件的根目录。 要获取请求文件的路径,NGINX将请求URI附加到指令指定的路径。 该指令可以放置在,或上下文中的任何级别上。 在下面的

  • 问题内容: 我无法编译以下代码: 出现以下错误: 无法从静态内容引用非静态方法calcArea(int,int) 这是什么意思?我该如何解决该问题..? 编辑: 根据您的建议,我创建了一个新的test()实例,如下所示: 这样对吗?如果我这样做有什么区别… 问题答案: Nanne提出的建议绝对可以解决您的问题。但是,我认为如果现在就养成习惯,在学习Java的早期阶段,尝试尽可能少地使用静态方法(例

  • 我正在尝试使用Spring MVC使用资源。我有一个WebApplicationContextConfig类,它扩展了WebMVCConfigureAdapter,并在其中重写了addResourceHandlers方法: 在文件夹资源中,我有三个图像。但是当我在浏览器中获取一些图像时,例如:http://localhost:8080/img/P123.jpeg我得到了404错误。 我错过什么了吗

  • 有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。 <dubbo:registry address="10.20.141.150:9090" dynamic="false" /> 或者 <dubbo:registry address="10.20.141.150:9090?dynamic=false" /> 服务提供者初次注册时为禁用状态,需人工启用。断线时,将不

  • 注意: 本教程假定你已经下载和安装了CodeIgniter开发环境。 首先,你需要创建一个可以处理静态内容请求的控制器类。控制器,是一个用来代理完成某项任务的PHP类,它充当基于MVC架构应用程序的“粘合剂”(译者注:控制器用来粘合/协调不同模型和视图。随着教程的深入,你会更深刻的理解这一点)。 举例来说,假设存在某个针对如下URL的请求: http://example.com/news/late

  • Note: 这篇教程假设你已经下载好 CodeIgniter ,并将其 安装 到你的开发环境。 你要做的第一件事情是新建一个 控制器 来处理静态页面,控制器就是一个简单的类, 用来完成你的工作,它是你整个 Web 应用程序的 “粘合剂” 。 例如,当访问下面这个 URL 时: http://example.com/news/latest/10 通过这个 URL 我们就可以推测出来,有一个叫做 "n