繁体   English   中英

如何使用springmvc-router配置spring-boot以提供静态文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM