无法在 Spring Boot 1.3 或 1.2.5 中设置我的自定义 favicon.ico

Unable to set my custom favicon.ico in Spring Boot 1.3 or 1.2.5

几天前我开始了一个全新的项目,第一次使用 FreeMarkerSpring 启动 1.3。但是,我正在努力显示自己的图标。事实上,它在项目一开始 时运作良好,但从几天前开始,它就没有了,我也不知道为什么。我已经通过 Whosebug 上的三个线程谈论它,但 none 解决了我的问题。我在 Google 上进行了搜索,但找不到任何解决方案。

如何重现

为了解决这个问题,我开始了一个新项目(Spring 这次是 1.2.5),但我遇到了同样的问题。 使用 Spring 工具套件:新建 ► Spring 入门项目 ► 然后我勾选了 Web 和 FreeMarker ► 完成。

项目准备就绪后,我在 demo.web 包 中创建了 HomeController,其中一个测试函数返回 "home"。我还在 home.ftl 中创建了一个 src/main/resources/templates 并将两个文件放入 src/main/resources/staticdemo.pngfavicon.ico(我也试过放在src/main/resources下)。

demo.png 显示正确,但 favicon.ico 未显示。也许我做错了,因为我是网络开发的新手。

HomeController.java

package demo.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String get() {
        return "home";
    }
}

home.ftl

<!DOCTYPE html>
<html>
<head>
    <title>Demo</title>
    <link rel="icon" type="image/x-icon" href="/favicon.ico">
</head>
<body>
    <img src="/demo.png" alt="">
</body>
</html>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.test</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

如果您需要更多信息,请询问我。 我提前感谢大家的帮助。

此致, 斯蒂勒

编辑

实际上,Spring 引导覆盖他在资源位置中可以找到的每个 favicon.ico。

请将您的 favicon.ico 重命名为其他 ico 文件,例如mycustomfavicon.ico。在 href 中也替换正确的名称,它将起作用。

既然@M.Deinum还没有转发他的评论作为答案,那我就来吧。

对于 Spring Boot 1.3.0.RELEASE,只需将以下行添加到您的 application.properties 中: spring.mvc.favicon.enabled=false

根据@Stilleur 的说法,这至少从 Spring Boot 1.3.0.M1 开始就有效。