[英]How to configure spring-boot to serve static files using springmvc-router
我是spring-mvc的新手,所以如果我使用错误或有误解,请告诉我。
我无法在spring-boot项目上提供静态文件。 我的控制器生成的视图没有问题。
我的spring-boot
项目使用springmvc-router
在单个文件中映射控制器的URL,而不是在每个控制器上使用@RequestMapping
。
根据文档,我必须将路由器添加到我的Spring MVC配置中。 就我而言,我需要扩展RouterConfigurationSupport
类。 当我放置此配置时(就像在文档中一样),它将导致对静态文件的请求失败(在日志中显示“白色标签错误”和404)。
这是配置类:
import org.resthub.web.springmvc.router.RouterConfigurationSupport;
@Configuration
@ComponentScan(basePackages = "my.project.demo.controllers")
// You should not use the @EnableWebMvc annotation
public class WebAppConfig extends RouterConfigurationSupport {
@Override
public List<String> listRouteFiles() {
List<String> routeFiles = new ArrayList<String>();
routeFiles.add("classpath:routes.conf");
return routeFiles;
}
}
我发现, RouterConfigurationSupport
类扩展(在某种程度上) WebMvcAutoConfiguration
。
在浏览器中,显示的消息是:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Apr 28 11:43:10 CDT 2016
There was an unexpected error (type=Not Found, status=404).
No message available
在日志中,它打印:
o.s.web.servlet.PageNotFound : No mapping found for HTTP request with URI [/css/bootstrap.min.css] in DispatcherServlet with name 'dispatcherServlet'
springmvc-router可以很好地用于我的控制器的视图,但是现在我无法提供静态文件(如CSS或JS)。
我的想法是可以“手动”配置静态文件分辨率,但是我更喜欢利用spring-boot自动配置。
我已经注意到,如果我跳过上述配置类,则spring-boot自动配置可以正常工作,并且可以提供静态文件,但是spring显然找不到控制器的路由。
这与此问题类似。 是否可以扩展WebMvcConfigurationSupport并使用WebMvcAutoConfiguration? 因为我尝试添加特定的自定义配置,但将其他配置保留为默认设置。
所以我尝试使用像这个答案中的BeanPostProcessor https://stackoverflow.com/a/28594582,以及与此问题的评论中类似的另一个https://github.com/spring-projects/spring-boot/issues/5004#issuecomment- 173714159,但我仍然无法加载静态文件。
我读过的另一项建议是复制WebMvcAutoConfiguration类中的代码,并将其附加到我的特定配置中,但是我不太喜欢这种解决方案。
可能无关紧要,但是我正在使用一个库来将Jade作为模板的语言使用。
我找到了解决问题的方法。
就像这个答案https://stackoverflow.com/a/35482066/2363482
我用一个空类扩展了WebMvcAutoConfigurationAdapter
,并在配置类中使用@Import
批注将其加载。
不过,我并不完全满意,因为根据springmvc-router的配置示例,我不应该使用@EnableWebMvc
注释,但是在提到的答案中他们使用了它,我也正在使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.