Spring Bootのファビコンガイド

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.