当我使用以下映射在应用程序中添加新控制器(非休息)后,我的静态资源就停止工作
@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?
当然可以 还有一个spring.mvc.static-path-pattern,你可以用它来重写:
spring.mvc.static-path-pattern
spring.mvc.static-path-pattern=/resources/**
将映射classpath:/static/css/foo.css到/resources/css/foo.css。
classpath:/static/css/foo.css
/resources/css/foo.css
(我已经在a862b6d中更清楚地说明了这一点)
话虽如此,我只能 强烈 建议您更改那里的路径。具有捕获根上下文的path变量 确实 是一个坏主意。