FaviconConfiguration
@Configuration
public class FaviconConfiguration {
@Bean
public SimpleUrlHandlerMapping faviconHandlerMapping() {
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();
requestHandler.setLocations(Collections.singletonList(new ClassPathResource("static/")));
return requestHandler;
}
}
/favicon.ico 요청을 직접 처리하게 설정한다.
Spring Boot는 기본적으로 /favicon.ico 요청을 정적 리소스에서 찾지만,
그래서 이처럼 직접 핸들러 매핑을 설정해서 명시적으로 /favicon.ico 요청을 처리하게 할 수 있다.
WebConfig
// favicon.ico 요청을 처리하는 리소스 핸들러 추가
registry.addResourceHandler("/favicon.ico")
.addResourceLocations("classpath:/static/");
// 정적 리소스 처리 추가
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
index
<!DOCTYPE html>
<html>
<head>
<title>FreeMarket API</title>
<link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABm1BMVEUAAAAAWasAWqwAWawAWq0AWKsAW6sAWawAWqsAWawAWawAWawAWawAWqwAWawAWawAWawAWqoAWqsAWKwAWawAWawAWKkAWawAWawAWqsAWawAWawAWawAWawAWawAWawAWqwAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWqwAWawAWawAWawAVaYAWawAWawAWawAWawAWKwAWawAWqsAWawAWawAWasAWawAWawAWawAVqkAWawAWawAWawAWawAWKsAWawAWawAWawAWawAWawAWawAQIAAWawAWawAWawAWawAWKoAWawAWawAWawAWawAWawAVqoAWawAWawAWawAWawAWawAVaoAWawAWawAWawAWqwAWawAWawAWawAWawAWa0AWawAWawAWawAWawAWawAWawAWawAV6kAWawAWawAWawAWawAWawAWawAWawAWawAWawAWawAWaz///9RGiG3AAAAiHRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOgzpYbNpvH7b0LIofB+c9UC56L8cA0AwUSfqT73UgCYLznMQEIGwEUU5zV8NWcFFMdDCR10fXRdSMLEAsfXOD63lsdBAMyqfXqkh9JwvnyuUZR2/jZQwkooPz9oicFTL/ik8j931QIFXSz5uhYAwNzlAm0AAAAAWJLR0SJaIL7PwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAWJJREFUOE9jYCAJMDIxM7OAaFY2dg4OdnZWFmaQKCMDXICTi5uHl49fQFBIWERUTFxCUkpaRlZOXoGJgUFRSVlFVU1dQ1NLW0dXT9/A0MjYxNTM3MKSgcHK2sbWzt7B0cnZxdXN3cPTy9vH18/fwZGBISAwKDgkNCw8IjIqOiY2Lj4hMSk5JTUtHeiKjMys7JzcvPyCwqLiktKy8orKquqa2rp6oEBMQ2NTc0trW3tHZ1d3T29f/4SJkyYDrZ8yddr0GTNnzZ4zd978BQsXLV6ydBnQAcsXrFi5avWatevWb9i4afOWrdu279i5C+j83Xv27tu/48DBQ4ePHD12/MTJU6dPnz4DjIiza86eO3/h4qXLV65eu37j5q3bd+7evXsPGFP3Hzx89PjJ02fPX7x89frN23fv33/4+AkUk58/f/n67fsPkIskf0Kj6tev33/+ggNMihEoAQYQQgBsEDK/T5JF9AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMS0xMFQwMjoxNzowNiswMDowMNmTbxwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDEtMTBUMDI6MTc6MDYrMDA6MDCozvegAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==">
</head>
<body>
<h1>FreeMarket API Server</h1>
<p>This is the backend API server for FreeMarket.</p>
<p>Visit <a href="/swagger-ui/index.html">API documentation</a> for more information.</p>
</body>
</html>
``