gpt4 book ai didi

Spring 在具有通配符 Controller 路由的同时提供静态内容

转载 作者:行者123 更新时间:2023-12-04 03:58:01 26 4
gpt4 key购买 nike

我的应用程序是使用前端的主干和后端的 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 ?

谢谢

最佳答案

首先是映射到 /** 的 Controller 方法。将优先于任何资源请求。您可以通过增加 ResourceHandlerRegistry 的优先级来解决这个问题。 .添加调用 registry.setOrder(Ordered.HIGHEST_PRECEDENCE)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 默认为你配置了两个资源处理程序, one mapped to /** and one mapped to /webjars/** .由于上述更改,这现在将优先于您 Controller 中也映射到 /** 的方法。 .要克服这个问题,您应该通过 application.properties 中的设置关闭默认资源处理。 :
spring.resources.addMappings=false

关于Spring 在具有通配符 Controller 路由的同时提供静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com