(我检查了类似的问题,但没有一个解释我在这个问题结尾处说明的奇怪行为.)
我有一个Spring Boot 1.3.5应用程序,坚持用Boot的默认图标(绿叶)替换我的图标.为了解决这个问题,我尝试了以下方法:
>在我的应用程序的静态根目录下安装我自己的favicon.
街上的一句话是,这应该是有效的.不幸的是,事实并非如此.
>设置属性spring.mvc.timicon.启用为false.
这应该是禁用org.springframework.启动.autoconfigure.web.WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter.FaviconConfiguration,它似乎负责提供Boot的默认favicon.通过在该类中设置断点,我能够确认当该属性设置为false时,该类中定义的bean确实没有被创建.
不幸的是,这也没有解决问题.
>实现我自己的favicon处理程序:
@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();
ClassPathResource classPathResource = new ClassPathResource("static/");
List<Resource> locations = Arrays.asList(classPathResource);
requestHandler.setLocations(locations);
return requestHandler;
}
}
可悲的是,这里也没有运气.
>将我的favicon从favicon.ico重命名为logo.ico,然后将我所有页面的favicon链接指向它.
现在,通过这个潜在的解决方案,我发现了令人惊讶的结果.当我卷曲我新命名的icon.ico资源时,我得到了Spring的叶子图标.然而,当我删除资源时,我得到了404.但是,当我把它放回去时,我又得到了叶子!换句话说,当我的静态资源丢失时,Spring Boot很乐意回答404,但是当它在那里时,它总是以叶子回答!
顺便提一下,同一文件夹中的其他静态资源(PNG,JPG等)服务很好.
很容易想象有一些邪恶的Spring Boot贡献者为此傻笑着,因为我把头发拉了出来. 🙂
我没有想法.任何人?
作为最后的手段,我可能会放弃使用ICO文件作为我的网站图标,而是使用PNG,但这需要付出代价(失去多分辨率支持),所以我宁愿避免这种情况.
最佳答案 这是一个弹簧启动功能:
Spring MVC自动配置
Spring Boot为Spring MVC提供自动配置,适用于大多数应用程序.
自动配置在Spring的默认值之上添加了以下功能:
>包含ContentNegotiatingViewResolver和BeanNameViewResolver
豆子.
>支持提供静态资源,包括支持
WebJars(见下文).
>转换器的自动注册,
GenericConverter,Formatter bean.
>支持HttpMessageConverters
(见下文).
>自动注册MessageCodesResolver(参见
下面).
>静态index.html支持.
>自定义Favicon支持.
>自动使用ConfigurableWebBindingInitializer bean(见下文).
您可以在以下位置找到此文档:http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration
并且,如果要禁用spring boot favicon,可以将此配置添加到yml或perperties文件中
spring.mvc.favicon.enabled=true # Enable resolution of favicon.ico.
或者,如果你想改变你自己的图标.试试这个:
@Configuration
public static class FaviconConfiguration {
@Bean
public SimpleUrlHandlerMapping faviconHandlerMapping() {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setOrder(Integer.MIN_VALUE);
mapping.setUrlMap(Collections.singletonMap("mylocation/favicon.ico",
faviconRequestHandler()));
return mapping;
}
}
您可以在Spring Boot: Overriding favicon找到更多详细信息
更新:
将favicon.ico放到资源文件夹中.
并尝试一下: