Перейти к основному содержимому

Руководство по фавиконам в Spring Boot

· 2 мин. чтения

1. Обзор

Фавикон — это небольшой значок веб-сайта, отображаемый в браузере, обычно рядом с адресом.

Часто мы не хотим соглашаться на те, которые по умолчанию предоставляются различными фреймворками, такими как Spring Boot.

В этом кратком руководстве мы обсудим, как настроить значок значка приложения Spring Boot , рассмотрев различные подходы к настройке значка.

2. Переопределение фавиконки

Самый простой способ переопределить значок по умолчанию для приложения Spring Boot — поместить новый значок в каталог ресурсов :

src/main/resources/favicon.ico

Файл favicon должен иметь имя « favicon.ico» .

Мы также можем поместить этот файл в статический каталог внутри каталога ресурсов проекта:

src/main/resources/static/favicon.ico

Spring Boot при запуске сканирует файл favicon.ico в расположении корневых ресурсов, за которым следуют расположения статического содержимого.

3. Использование пользовательского местоположения

Вместо того, чтобы размещать значок на корневом уровне каталога ресурсов, мы можем захотеть сохранить его вместе с другими изображениями приложения.

Мы можем сделать это, отключив значок по умолчанию в нашем файле application.properties :

spring.mvc.favicon.enabled=false

Стоит отметить, что начиная с Spring Boot 2.2 это свойство конфигурации устарело. Более того, Spring Boot больше не предоставляет фавикон по умолчанию, так как этот значок можно классифицировать как утечку информации.

А затем реализуем наш обработчик:

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

Обратите внимание, что мы установили Integer.MIN_VALUE для порядка сопоставления, поэтому дайте этому обработчику наивысший приоритет.

С этой конфигурацией мы можем хранить наш файл favicon в любом месте в структуре приложения .

4. Изящно отключить Favicon

Если нам не нужен значок для нашего приложения, мы можем отключить его, установив для свойства spring.mvc.favicon.enabled значение false. Но при этом при поиске браузеры получают ошибку «404 Not Found».

Мы можем избежать этого с помощью пользовательского контроллера favicon, который возвращает пустой ответ :

//...

@Controller
static class FaviconController {

@GetMapping("favicon.ico")
@ResponseBody
void returnNoFavicon() {
}
}

//...

5. Вывод

В этой статье мы увидели, как переопределить значок по умолчанию для загрузочного приложения Spring, использовать пользовательское расположение для значка и как избежать ошибки 404, если мы не хотим использовать значок.

Как всегда, образцы кода доступны на GitHub.