Guia para o Favicon no Spring Boot

Guia para o Favicon no Spring Boot

1. Visão geral

Um favicon é um pequeno ícone de site exibido em um navegador, geralmente próximo a um endereço.

Muitas vezes, não queremos nos contentar com os padrões fornecidos por vários frameworks, como Spring Boot.

Neste tutorial rápido, discutiremos comocustomize the favicon of a Spring Boot application, analisando várias abordagens para personalizar o favicon.

2. Substituindo o Favicon

A maneira mais simples de substituir o favicon padrão de um aplicativo Spring Boot éplace the new favicon in the resources directory:

src/main/resources/favicon.ico

O arquivo favicon deve ter o nome “favicon.ico”.

Também podemos colocar esse arquivo no diretóriostatic dentro do diretório de recursos do projeto:

src/main/resources/static/favicon.ico

Spring Boot durante a inicialização, verifica o arquivofavicon.ico  no local de recursos raiz seguido por locais de conteúdo estático.

3. Usando um local personalizado

Em vez de colocar o favicon no diretório raiz do nível de recursos, convém mantê-lo junto com outras imagens do aplicativo.

Podemos fazer isso desativando o favicon padrão em nossoapplication.properties file:

spring.mvc.favicon.enabled=false

E, em seguida, implementando nosso manipulador:

@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;
    }
}

Observe que definimosInteger.MIN_VALUE  para a ordem de mapeamento, portanto, dê a este manipulador a prioridade mais alta.

Com esta configuração,we can store our favicon file at any location within application structure.

4. Desabilitar graciosamente o Favicon

Se não quisermos nenhum favicon para nosso aplicativo, podemos desabilitá-lo definindo a propriedadespring.mvc.favicon.enabled to false. Mas com isso, quando os navegadores pesquisam, eles recebem um erro "404 não encontrado".

Podemos evitar isso coma custom favicon controller, that returns an empty response:

//...

@Controller
static class FaviconController {

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

//...

5. Conclusão

Neste artigo, vimos como substituir o favicon padrão de um aplicativo de inicialização Spring, usar um local personalizado para o favicon e como evitar o erro 404 se não quisermos usar um favicon.

Como sempre, as amostras de código estão disponíveisover on GitHub.