2016-04-28 21 views
0

私はspring-mvcの新機能ですので、間違って使用している場合や私が誤解している場合は教えてください。springmvc-routerを使用して静的ファイルを提供するためにspring-bootを設定する方法

私はスプリングブートプロジェクトで静的ファイルを提供できません。私のコントローラによって生成されたビューに問題はありません。

マイspring-bootプロジェクトではなく、各コントローラに@RequestMappingを使用して、単一のファイルにコントローラのURLをマップするためにspringmvc-routerを使用しています。

ドキュメンテーションによると、ルータを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-ルータが私のコントローラのビューに適していますが、今静的ファイル(cssやjsなど)を提供することはできません。

静的なファイルの解像度を手動で設定することは可能ですが、私はspring-boot自動設定を利用したいと考えています。

上記の設定クラスをスキップすると、スプリングブート自動設定が正常に動作し、静的ファイルが取得されますが、春は私のコントローラのルートを見つけることができません。


私は特定のカスタム設定を追加しようとしているが、デフォルトとして他の構成を維持していますので、これは、この質問Is it possible to extend WebMvcConfigurationSupport and use WebMvcAutoConfiguration?に似ています。

だから私はこの答え https://stackoverflow.com/a/28594582 のようBeanPostProcessorを使用してみましたし、この問題のコメント https://github.com/spring-projects/spring-boot/issues/5004#issuecomment-173714159内の別の似ていますが、私はまだ静的ファイルをロードすることはできません。

私が読んだもう1つの主張は、WebMvcAutoConfigurationクラスのコードをコピーして特定の設定に追加することでしたが、私はこの解決策が本当に気に入らないのです。

これは関係ないかもしれませんが、私はJadeをテンプレートの言語として扱うためにライブラリを使用しています。


  • 私はすでにこれに修正を見つけたが、私は他の似たようなケースが見つからないので、多分私よりうまくいけば、より良い別の解決策があるので、私はこの質問を投稿する必要があると感じています。

答えて

0

私はこの問題を解決する方法を見つけました。

はちょうどこの答え https://stackoverflow.com/a/35482066/2363482

ように私は空のクラスでWebMvcAutoConfigurationAdapterを拡張し、私のコンフィギュレーションクラスで@Importのアノテーションを使用してロードされました。

springmvc-routerの設定例によれば、私は@EnableWebMvcアノテーションを使用すべきではありませんが、上記の回答ではそれを使用しており、私もそれを使用しています。

関連する問題