Spring bootに初めて触ってまだ3ヶ月程度の素人です。日本語の情報が少ない分野なので、英語サイトを調べて解決した事は小ネタとして投稿していこうかなと思ってる次第であります。
Springマークのfavicon
さて、Spring bootで (*) web apiを作成してbrowserから叩いてみると、緑の葉っぱのspringアイコンがfaviconとして自動的に付いてきます。
(*) Spring一般かもしれませんが…。
これって、万が一Spring bootに脆弱性が見つかった場合「さぁ私はSpring bootですから脆弱性突っついてください!」と言わんばかりな状況になってしまう訳です。
faviconを差し替えよう
今回は、
- Hello world!と返すだけのcontrollerを用意
- そのアドレスを叩いた際に、任意のfaviconが表示されるようにする
という事をします。Controllerのコードは下記のようなシンプルなものです。
@Controller
@EnableAutoConfiguration
class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
任意のfavicon.icoを配置する
このスレによると、
main/resources
配下にfavicon.ico
を配置する (spring boot 1.2.0以降であれば、main/resources/static
) とfaviconが置き換わるようです。
早速試してみると、おお、確かに変わりますね!!
そして、http://localhost:8080/favicon.ico へアクセスすると、確かに配置したfaviconが返ってきます。
spring.mvc.favicon.enabledをfalseにする
こちらは「差し替え」ではありませんが、葉っぱマークをfaviconとしない、という目的は達成できるということでご紹介。
main/resources/application.yml
に下記を追記することで、http://localhost:8080/favicon.ico を叩いてもNot found(404) になります。
spring:
mvc.favicon.enabled: false
だがしかし、、、
Firefox、Safariはちゃんとfaviconが変わったのにChromeだと変わらない…。シークレットモードでやっても変わらず…。
ググると「Chromeのfaviconがおかしくなった」というコメントがいくつか出てくるのでそれ関連かなぁ…。まぁ、追々見てみます。
まとめ
Spring bootでfaviconを置き換える方法をご説明しました。簡単で何よりです。
上記で触れましたstack overflowのこのスレでは、Configurationをinjectionする方法などが触れられています。分かり次第、日本語でまとめてみようかなぁと思ってますー。