Spring Bootのファビコンのガイド
1. 概要
ファビコンは、通常はアドレスの横にあるブラウザーに表示される小さなWebサイトアイコンです。
多くの場合、SpringBootなどのさまざまなフレームワークによって提供されるデフォルトのフレームワークを採用したくありません。
このクイックチュートリアルでは、ファビコンをカスタマイズするためのさまざまなアプローチを調べて、customize the favicon of a Spring Boot applicationを実行する方法について説明します。
2. ファビコンのオーバーライド
Spring Bootアプリケーションのデフォルトのファビコンをオーバーライドする最も簡単な方法は、place the new favicon in the resources directoryです。
src/main/resources/favicon.ico
ファビコンファイルには「favicon.ico”」という名前を付ける必要があります。
そのファイルをプロジェクトのリソースディレクトリ内のstaticディレクトリに配置することもできます。
src/main/resources/static/favicon.ico
起動時にSpringBootを実行し、ルートリソースの場所でfavicon.ico fileをスキャンし、続いて静的コンテンツの場所をスキャンします。
3. カスタムの場所を使用する
リソースディレクトリのルートレベルにファビコンを配置する代わりに、アプリケーションの他の画像と一緒にファビコンを保持することもできます。
これを行うには、application.properties fileのデフォルトのファビコンを無効にします。
spring.mvc.favicon.enabled=false
そして、ハンドラーを実装します:
@Configuration
public class FaviconConfiguration {
@Bean
public SimpleUrlHandlerMapping customFaviconHandlerMapping() {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setOrder(Integer.MIN_VALUE);
mapping.setUrlMap(Collections.singletonMap(
"/favicon.ico", faviconRequestHandler()));
return mapping;
}
@Bean
protected ResourceHttpRequestHandler faviconRequestHandler() {
ResourceHttpRequestHandler requestHandler
= new ResourceHttpRequestHandler();
ClassPathResource classPathResource
= new ClassPathResource("images");
List locations = Arrays.asList(classPathResource);
requestHandler.setLocations(locations);
return requestHandler;
}
}
マッピング順序にInteger.MIN_VALUE を設定しているため、このハンドラーに最高の優先度を指定します。
この構成では、we can store our favicon file at any location within application structure。
4. ファビコンを正常に無効にする
アプリケーションにファビコンが必要ない場合は、プロパティspring.mvc.favicon.enabled をfalseに設定してファビコンを無効にできます。 しかし、これにより、ブラウザが検索すると「404 Not Found」エラーが発生します。
これはa custom favicon controller, that returns an empty responseで回避できます。
//...
@Controller
static class FaviconController {
@GetMapping("favicon.ico")
@ResponseBody
void returnNoFavicon() {
}
}
//...
5. 結論
この記事では、Springブートアプリケーションのデフォルトのファビコンをオーバーライドする方法、ファビコンのカスタムの場所を使用する方法、ファビコンを使用したくない場合に404エラーを回避する方法を見ました。
いつものように、コードサンプルは利用可能ですover on GitHub.