一尘不染

更改默认URL映射以在Spring Boot中提供静态内容

spring-boot

当我使用以下映射在应用程序中添加新控制器(非休息)后,我的静态资源就停止工作

@RequestMapping(value = "/{postId}/{postUri:.+}", method = RequestMethod.GET)
public String viewPost(@ModelAttribute("model") ModelMap model, PathVariable("postId") String postId, PathVariable("postUri") String postUri) {
          // do something
}

调试之后,我发现我新添加的控制器方法开始拾取静态资源,基本上,它优先于静态资源的默认映射。

例如,对以下静态资源的请求到达了我的控制器,而不是静态资源处理程序。

http://localhost:7999/css/bootstrap-2a31dca112f26923b51676cb764c58d5.css

我正在使用Spring Boot 1.4

因为我不想修改Controller方法的URL,是否可以修改用于提供默认静态内容的映射URL?


阅读 347

收藏
2020-05-30

共1个答案

一尘不染

当然可以 还有一个spring.mvc.static-path-pattern,你可以用它来重写:

spring.mvc.static-path-pattern=/resources/**

将映射classpath:/static/css/foo.css/resources/css/foo.css

(我已经在a862b6d中更清楚地说明了这一点

话虽如此,我只能 强烈 建议您更改那里的路径。具有捕获根上下文的path变量 确实 是一个坏主意。

2020-05-30