我的应用程序是在前端使用骨干和后端使用 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(使用前将#替换为@)