我的应用程序是使用前端的骨干和后端的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的每条路线?
谢谢
答案 0 :(得分:9)
首先,您映射到/**
的控制器方法将优先于任何资源请求。您可以通过增加ResourceHandlerRegistry
的优先级来解决此问题。在registry.setOrder(Ordered.HIGHEST_PRECEDENCE)
的{{1}}方法中添加对addResourceHandlers
的调用:
StaticResourceConfiguration
第二件事是,默认情况下,Spring Boot默认为您配置两个资源处理程序one mapped to /**
and one mapped to /webjars/**
。由于上述更改,现在优先于控制器中的方法,该方法也会映射到@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
registry.addResourceHandler("/js/**").addResourceLocations("/resources/js");
}
}
。要解决此问题,您应该通过/**
:
application.properties