gpt4 book ai didi

spring-boot - 为什么 Spring Boot 用 Spring 的叶子图标替换了我所有的图标?

转载 作者:行者123 更新时间:2023-12-01 04:51:53 25 4
gpt4 key购买 nike

(我检查了类似的问题,但没有一个能解释我在这个问题末尾说明的奇怪行为。)

我有一个 Spring Boot 1.3.5 应用程序,它坚持用 Boot 的默认图标(绿叶)替换我的图标。为了解决这个问题,我尝试了以下方法:

  • 在我的应用程序的静态根目录中安装我自己的图标。

  • 街上的说法是,这应该有效。不幸的是,事实并非如此。
  • 设置属性 spring​.​mvc​.​favicon​.​enabled为假。

  • 这应该禁用 org​.​springframework​.​boot​.​autoconfigure​.​web​.​WebMvcAutoConfiguration​.​WebMvcAutoConfigurationAdapter​.​FaviconConfiguration ,它似乎负责提供 Boot 的默认图标。通过在该类中设置断点,我能够确认该类中定义的 bean 在该属性设置为 false 时确实不会被创建。

    不幸的是,这也没有解决问题。
  • 实现我自己的图标处理程序:
    @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.ico 重命名为 logo.ico,并将我所有页面的收藏夹图标链接指向该图标。

  • 现在,通过这个潜在的修复,我发现了一个令人惊讶的结果。当我 curl编辑我新命名的 icon.ico资源,我得到了 Spring 的叶子图标。然而,当我删除资源时,我得到了 404。但是,当我把它放回去时,我又得到了叶子!换句话说,当我的静态资源丢失时,Spring Boot 很乐意回答 404,但是当它在那里时,它总是用叶子来回答!

    顺便说一句,同一文件夹中的其他静态资源(PNG、JPG 等)也可以正常使用。

    很容易想象,当我拔出头发时,有一些邪恶的 Spring Boot 贡献者为此 mock 自己。 :-)

    我没有想法了。任何人?

    作为最后的手段,我可​​能会放弃使用 ICO 文件作为我的站点图标,而使用 PNG,但这是有代价的(失去多分辨率支持),所以我宁愿避免这种情况。

    最佳答案

    这是一个 Spring Boot 功能:

    Spring MVC 自动配置

    Spring Boot 为 Spring MVC 提供了自动配置,适用于大多数应用程序。

    自动配置在 Spring 的默认值之上添加了以下功能:

  • 包含 ContentNegotiatingViewResolver 和 BeanNameViewResolver
    bean 。
  • 支持服务静态资源,包括支持
    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,你可以添加这个配置给你 ymlperperties文件
    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 放入资源文件夹。

    put favicon.ico to resources

    并且,试试看:

    favicon

    关于spring-boot - 为什么 Spring Boot 用 Spring 的叶子图标替换了我所有的图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494825/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com