Sor*_*adu 9 spring spring-mvc spring-boot
我的应用程序是使用前端的骨干和后端的spring框架构建的.它是一个单一的HTML应用程序.路由由骨干处理,因此我有一个后端路由,具有下一个结构:
@RequestMapping(value="/**", method=RequestMethod.GET)
public String Pages()
{
return "index";
}
Run Code Online (Sandbox Code Playgroud)
将所有内容指向我的index.html.问题是静态内容文件也指向这个路由,我不希望这样.我试图通过覆盖静态内容的addResourceHandler方法来配置WebMvcConfigurerAdapter,但它不起作用.
@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**").addResourceLocations("/resources/js");
}
}
Run Code Online (Sandbox Code Playgroud)
除了/ js/**和/ assets/**之外,我如何指向我的index.html的每条路线?
谢谢
首先,映射到的控制器方法/**
将优先于任何资源请求.你可以通过增加优先级来解决这个问题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");
}
}
Run Code Online (Sandbox Code Playgroud)
第二件事是,默认情况下,Spring Boot默认为您配置两个资源处理程序,一个映射到/**
,一个映射到/webjars/**
.由于上述更改,现在将优先于控制器中也映射到的方法/**
.要解决此问题,您应该通过以下设置关闭默认资源处理application.properties
:
spring.resources.addMappings=false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3469 次 |
最近记录: |