Change favicon StaticResourceLocation

Prior to this commit, the `StaticResourceLocation` for favicons would
point to `"/**/favicon.ico"`. This location does not reflect the current
web development landscape, since the png format and size variants are
not supported here. Also, the `"**"` pattern can be costly at runtime
and is deprecated by the new path pattern support in Spring Framework
(see gh-22833).

This commit changes the default locations to `"/favicon.*","/*/icon-*"`,
supporting common use cases such as `"/favicon.ico"`, `"/favicon.png"`
and `"/icons/icon-48x48.png"`.

Closes gh-23126
This commit is contained in:
Brian Clozel
2020-10-23 12:03:32 +02:00
parent e60f26f8cc
commit 5fceb9d5b7
5 changed files with 10 additions and 14 deletions

View File

@@ -50,7 +50,7 @@ public enum StaticResourceLocation {
/**
* The {@code "favicon.ico"} resource.
*/
FAVICON("/**/favicon.ico");
FAVICON("/favicon.*", "/*/icon-*");
private final String[] patterns;

View File

@@ -128,8 +128,7 @@ public final class StaticResourceRequest {
}
private Stream<String> getPatterns() {
return this.locations.stream().flatMap(StaticResourceLocation::getPatterns)
.map((pattern) -> pattern.replace("/**/", "/*/"));
return this.locations.stream().flatMap(StaticResourceLocation::getPatterns);
}
@Override

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -54,7 +54,9 @@ class StaticResourceRequestTests {
assertMatcher(matcher).matches("/js/file.js");
assertMatcher(matcher).matches("/images/file.css");
assertMatcher(matcher).matches("/webjars/file.css");
assertMatcher(matcher).matches("/foo/favicon.ico");
assertMatcher(matcher).matches("/favicon.ico");
assertMatcher(matcher).matches("/favicon.png");
assertMatcher(matcher).matches("/icons/icon-48x48.png");
assertMatcher(matcher).doesNotMatch("/bar");
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,7 +48,9 @@ class StaticResourceRequestTests {
assertMatcher(matcher).matches("/js/file.js");
assertMatcher(matcher).matches("/images/file.css");
assertMatcher(matcher).matches("/webjars/file.css");
assertMatcher(matcher).matches("/foo/favicon.ico");
assertMatcher(matcher).matches("/favicon.ico");
assertMatcher(matcher).matches("/favicon.png");
assertMatcher(matcher).matches("/icons/icon-48x48.png");
assertMatcher(matcher).doesNotMatch("/bar");
}