私は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をテンプレートの言語として扱うためにライブラリを使用しています。
- 私はすでにこれに修正を見つけたが、私は他の似たようなケースが見つからないので、多分私よりうまくいけば、より良い別の解決策があるので、私はこの質問を投稿する必要があると感じています。