Spring 提供静态内容,同时具有通配符控制器路由

2024-04-16

我的应用程序是在前端使用骨干和后端使用 spring 框架构建的。这是一个单一的 html 应用程序。路由由骨干网处理,因此我有一个具有以下结构的后端路由:

@RequestMapping(value="/**", method=RequestMethod.GET)
public String Pages()
{
    return "index";
}

将所有内容都指向我的index.html。问题是静态内容 文件也指向这条路线,我不想要这个。我尝试过 通过重写 addResourceHandler 方法来配置 WebMvcConfigurerAdapter 静态内容,但它不起作用。

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/js/**").addResourceLocations("/resources/js");
    }
}

如何将除 /js/** 和 /assets/** 之外的所有路由指向我的 index.html ?

谢谢


第一件事是映射到的控制器方法/**将优先于任何资源请求。您可以通过提高优先级来解决此问题ResourceHandlerRegistry。添加呼叫至registry.setOrder(Ordered.HIGHEST_PRECEDENCE) in the addResourceHandlers的方法StaticResourceConfiguration:

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
        registry.addResourceHandler("/js/**").addResourceLocations("/resources/js");
    }
}

第二件事是,默认情况下,Spring Boot 会默认为您配置两个资源处理程序,一个映射到/**和一个映射到/webjars/** https://github.com/spring-projects/spring-boot/blob/v1.1.3.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java#L243-L260。由于上述更改,这现在将优先于控制器中也映射到的方法/**。为了克服这个问题,您应该通过以下设置关闭默认资源处理application.properties:

spring.resources.addMappings=false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 提供静态内容,同时具有通配符控制器路由 的相关文章

随机推荐

  • 从另一个线程调用 setter 时读取实例变量是否是线程安全的?

    我有一个具有属性的对象 interface Car property strong NSLicensePlate licensePlate end 我在方法中使用该属性 void doSomething licensePlate frobn
  • 使用 OCaml 警告属性禁用警告 8:不详尽的匹配

    我正在尝试编写类似于以下内容的代码 let a b body 1 2 我想仅针对该模式禁用警告 8 a b 而不是为了身体或让之外的任何东西 我尝试设置警告属性来禁用警告 但以下方法都不起作用 let warning 8 a warning
  • 重新验证用户。使用适用于 Android 的 FirebaseUI 身份验证

    我正在使用 Firebase UI 身份验证 并且想为我的应用程序实现删除帐户功能 某些安全敏感操作 例如删除帐户 设置主电子邮件地址和更改密码 要求用户最近登录 要删除用户 该用户必须最近登录过 请参阅重新验证用户身份 https fir
  • Perforce - 每次签到时都会收到电子邮件

    有没有办法让 Perforce 在每张支票上向您发送一封电子邮件到特定的存款机构 是的 输入 p4 user 查看您的用户配置 然后在 评论 下将您希望在签入时收到通知的仓库区域的文件规范放入其中 如下所示 Reviews depot my
  • 在 while 循环中使用枚举函数

    我有几种使用迭代来搜索正确答案的数学算法 这是一个例子 def Bolzano fonction a b tol 0 000001 while abs b a gt tol m a b 2 if sign fonction m sign f
  • 如何将 TreeViewer 单元格的一部分设为粗体?

    我目前想编写一个基于 JFace 的 Eclipse 编辑器TreeViewer 我添加了一个CellLabelProvider to the TreeViewer 如果我直接在update的方法CellLabelProvider对于粗体字
  • javascript中console.log和return有什么区别

    JavaScript 中 console log 和 return 有什么区别 他们都看到在终端上打印出东西 isPrime num if num i 0 return false for var i 2 i lt num i if num
  • 与 NSPersistentCloudKitContainer 的关系持久化

    我正在开发一个使用的应用程序NSPersistentCloudKitContainer在设备之间共享数据 核心数据模型具有多个实体 其中两个实体使用与其各自相反的关系进行连接 我遇到的问题是 当我将关系设置为nil云数据未更新 当我重新启动
  • 为什么我在部署容器时看到此错误:“错误:(gcloud.run.deploy) PERMISSION_DENIED:调用者没有权限”?

    假设我有一个cloudbuild yaml文件如下所示 还假设我可以在使用时手动运行和部署有问题的容器gcloud用于单独的功能 构建和运行 部署的时候第三步就出现错误ERROR gcloud run deploy PERMISSION D
  • Gmail 如何识别电子邮件签名(或者“识别电子邮件签名的最佳方式是什么?”)

    Gmail 会自动将看起来像签名的文本变成灰色 有人猜测它是如何做到这一点的吗 我注意到这取决于发件人姓名的存在 但我认为这只是故事的一部分 我之所以这么问 是因为我正在开发一个具有电子邮件界面的 Web 应用程序 并且我想在显示用户的电子
  • Python Pandas - 如何通过描述函数计算 25 个百分点

    对于数据框中的给定数据集 当我应用describe函数 我得到基本统计数据 包括最小值 最大值 25 50 等 例如 data 1 pd DataFrame One 4 6 8 10 columns One data 1 describe
  • 登录 Scala

    在 Java 中 日志记录的标准习惯用法是为记录器对象创建一个静态变量 并在各种方法中使用它 在 Scala 中 习惯用法似乎是使用 logger 成员创建 Logging 特征 并将该特征混合到具体类中 这意味着每次创建对象时 它都会调用
  • 如何根据方向改变屏幕布局?

    在肖像中我有 5 个图标 第一行有 4 个图标 第二行有 1 个图标 但在横向中 第五个图标必须适合第一行 怎么解决这个问题 对于纵向和横向位置使用不同的布局文件 使用layout land用于风景位置 当方向改变时 Android 会自动
  • 优化 MySQL 插入以处理数据流

    我正在使用高速数据流并执行以下步骤将数据存储在 MySQL 数据库中 对于每件新到货的商品 1 解析传入项 2 执行几次 INSERT ON DUPLICATE KEY UPDATE 我用过插入 重复密钥更新 http dev mysql
  • 查找给定范围内给定数字的整数个数的算法

    如果我以列表的形式得到完整的数字集list我想知道它们在给定范围内可以形成多少个 有效 整数 A B 我可以使用什么算法来有效地完成它 例如 给定一个数字列表 包含重复项和零 list 5 3 3 2 0 0 我想知道这个范围内可以组成多少
  • 为什么字体名称需要引号?

    据我所知 如果字体包含空格 则需要使用双引号或单引号 例如 font family Times New Roman Times font family Times New Roman Times 但在谷歌字体上 http www googl
  • Git:区分本地和远程标签

    如果远程存储库中有标签 我通常会在拉取时自动获取它们 当我删除创建的本地标签时 git tag d
  • Hudson 基于 URL 令牌构建

    我配置了一个 hudson 实例并创建了作业 创建构建时 我能够看到此选项 通过访问此 URL SecretTOKEN 触发构建 选项 现在 我无法在我创造的任何新工作中看到这一点 我是否缺少某些设置或配置 我所做的唯一更改是将 servl
  • C# 中的委托数组

    我正在尝试从委托数组调用委托函数 我已经能够创建委托数组 但是如何调用委托呢 public delegate void pd public static class MyClass static void p1 static void p2
  • Spring 提供静态内容,同时具有通配符控制器路由

    我的应用程序是在前端使用骨干和后端使用 spring 框架构建的 这是一个单一的 html 应用程序 路由由骨干网处理 因此我有一个具有以下结构的后端路由 RequestMapping value method RequestMethod