知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 中 Favicon 指南

Spring Boot,Spring MVC
HongKong
6
02:02 PM · Dec 06 ,2025

1. 概述

Favicon 是一個網站圖標,在瀏覽器中顯示,通常位於地址欄旁邊。

我們通常不希望接受各種框架(例如 Spring Boot)提供的默認圖標。

在本快速教程中,我們將討論如何自定義 Spring Boot 應用程序的 favicon,通過研究各種自定義 favicon 的方法。

2. 覆蓋默認Favicon

Spring Boot應用程序的簡單方法是將新的Favicon放置在resources目錄下

src/main/resources/favicon.ico

Favicon 文件應具有 “favicon.ico” 的名稱。

我們還可以將該文件放在項目資源目錄下的 static 目錄中:

src/main/resources/static/favicon.ico

Spring Boot 在啓動時,會掃描根目錄下 resources 目錄以及靜態內容目錄中是否存在 <em >favicon.ico</em> 文件。

3. 使用自定義位置

與其將 favicon 放在資源目錄的根級別,不如將其與應用程序的其他圖像一起保留。

我們可以通過在我們的 application.properties 文件中禁用默認 favicon 來實現這一點:

spring.mvc.favicon.enabled=false

值得注意的是,自 Spring Boot 2.2 版本起,此配置屬性已被棄用。 此外,Spring Boot 不再提供默認的 favicon,因為該圖標可能被視為信息泄露。

然後實現我們的處理器:

@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("com/baeldung/images/");
        List<Resource> locations = Arrays.asList(classPathResource);
        requestHandler.setLocations(locations);
        return requestHandler;
    }
}

請注意,我們已將Integer.MIN_VALUE設置為映射優先級,因此請為該處理程序設置最高優先級。

通過這種配置,我們可以將 favicon 文件存儲在應用程序結構中的任何位置

4. 優雅禁用 Favicon

如果不想為我們的應用程序設置 favicon,我們可以通過將 spring.mvc.favicon.enabled 屬性設置為 false 來禁用它。但是,這樣做會導致瀏覽器在查找時出現“404 未找到”錯誤。

我們可以通過使用 自定義 favicon 控制器,返回一個空響應 來避免這種情況:

//...

@Controller
static class FaviconController {
 
    @GetMapping("favicon.ico")
    @ResponseBody
    void returnNoFavicon() {
    }
}

//...

5. 結論

在本文中,我們學習瞭如何覆蓋 Spring Boot 應用程序的默認 favicon,使用自定義 favicon 位置,以及如何在不使用 favicon 時避免 404 錯誤。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.