Deprecate use of path extensions for request mapping and content negotiation
Closes gh-20528
This commit is contained in:
parent
0c3be4dde5
commit
ab01c55d8e
|
|
@ -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.
|
||||
|
|
@ -220,6 +220,7 @@ public class WebMvcAutoConfiguration {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void configurePathMatch(PathMatchConfigurer configurer) {
|
||||
configurer.setUseSuffixPatternMatch(this.mvcProperties.getPathmatch().isUseSuffixPattern());
|
||||
configurer.setUseRegisteredSuffixPatternMatch(
|
||||
|
|
@ -227,6 +228,7 @@ public class WebMvcAutoConfiguration {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
|
||||
WebMvcProperties.Contentnegotiation contentnegotiation = this.mvcProperties.getContentnegotiation();
|
||||
configurer.favorPathExtension(contentnegotiation.isFavorPathExtension());
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -22,6 +22,7 @@ import java.util.Locale;
|
|||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.validation.DefaultMessageCodesResolver;
|
||||
|
|
@ -352,10 +353,14 @@ public class WebMvcProperties {
|
|||
*/
|
||||
private String parameterName;
|
||||
|
||||
@DeprecatedConfigurationProperty(
|
||||
reason = "Use of path extensions for request mapping and for content negotiation is discouraged.")
|
||||
@Deprecated
|
||||
public boolean isFavorPathExtension() {
|
||||
return this.favorPathExtension;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setFavorPathExtension(boolean favorPathExtension) {
|
||||
this.favorPathExtension = favorPathExtension;
|
||||
}
|
||||
|
|
@ -402,18 +407,26 @@ public class WebMvcProperties {
|
|||
*/
|
||||
private boolean useRegisteredSuffixPattern = false;
|
||||
|
||||
@DeprecatedConfigurationProperty(
|
||||
reason = "Use of path extensions for request mapping and for content negotiation is discouraged.")
|
||||
@Deprecated
|
||||
public boolean isUseSuffixPattern() {
|
||||
return this.useSuffixPattern;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setUseSuffixPattern(boolean useSuffixPattern) {
|
||||
this.useSuffixPattern = useSuffixPattern;
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(
|
||||
reason = "Use of path extensions for request mapping and for content negotiation is discouraged.")
|
||||
@Deprecated
|
||||
public boolean isUseRegisteredSuffixPattern() {
|
||||
return this.useRegisteredSuffixPattern;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setUseRegisteredSuffixPattern(boolean useRegisteredSuffixPattern) {
|
||||
this.useRegisteredSuffixPattern = useRegisteredSuffixPattern;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -432,6 +432,7 @@ class WebMvcAutoConfigurationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void customMediaTypes() {
|
||||
this.contextRunner.withPropertyValues("spring.mvc.contentnegotiation.media-types.yaml:text/yaml",
|
||||
"spring.mvc.contentnegotiation.favor-path-extension:true").run((context) -> {
|
||||
|
|
@ -687,6 +688,7 @@ class WebMvcAutoConfigurationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void useSuffixPatternMatch() {
|
||||
this.contextRunner.withPropertyValues("spring.mvc.pathmatch.use-suffix-pattern:true",
|
||||
"spring.mvc.pathmatch.use-registered-suffix-pattern:true").run((context) -> {
|
||||
|
|
@ -707,6 +709,7 @@ class WebMvcAutoConfigurationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void pathExtensionContentNegotiation() {
|
||||
this.contextRunner.withPropertyValues("spring.mvc.contentnegotiation.favor-path-extension:true")
|
||||
.run((context) -> {
|
||||
|
|
@ -718,6 +721,7 @@ class WebMvcAutoConfigurationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void queryParameterContentNegotiation() {
|
||||
this.contextRunner.withPropertyValues("spring.mvc.contentnegotiation.favor-parameter:true").run((context) -> {
|
||||
RequestMappingHandlerMapping handlerMapping = context.getBean(RequestMappingHandlerMapping.class);
|
||||
|
|
|
|||
|
|
@ -2211,6 +2211,7 @@ Instead of using suffix matching, we can use a query parameter to ensure that re
|
|||
spring.mvc.contentnegotiation.media-types.markdown=text/markdown
|
||||
----
|
||||
|
||||
Suffix pattern matching is deprecated and will be removed in a future release.
|
||||
If you understand the caveats and would still like your application to use suffix pattern matching, the following configuration is required:
|
||||
|
||||
[source,properties,indent=0,subs="verbatim,quotes,attributes",configprops]
|
||||
|
|
|
|||
Loading…
Reference in New Issue