Replace WebMvcConfigurerAdapter with default methods

Issue: SPR-15465
This commit is contained in:
Rossen Stoyanchev
2017-04-20 16:13:08 -04:00
parent d3b178a812
commit 7df3d68b2a
21 changed files with 165 additions and 123 deletions

View File

@@ -38,7 +38,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -87,7 +87,7 @@ public class MockMvcClientHttpRequestFactoryTests {
@EnableWebMvc @EnableWebMvc
@Configuration @Configuration
@ComponentScan(basePackageClasses=MockMvcClientHttpRequestFactoryTests.class) @ComponentScan(basePackageClasses=MockMvcClientHttpRequestFactoryTests.class)
static class MyWebConfig extends WebMvcConfigurerAdapter { static class MyWebConfig implements WebMvcConfigurer {
} }
@Controller @Controller

View File

@@ -42,12 +42,14 @@ import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.request.async.CallableProcessingInterceptor; import org.springframework.web.context.request.async.CallableProcessingInterceptor;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer; import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.any;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/** /**
* Tests with Java configuration. * Tests with Java configuration.
@@ -100,7 +102,7 @@ public class AsyncControllerJavaConfigTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) { public void configureAsyncSupport(AsyncSupportConfigurer configurer) {

View File

@@ -21,7 +21,6 @@ import javax.servlet.ServletContext;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -44,14 +43,18 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer; import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import static org.junit.Assert.*; import static org.junit.Assert.assertNotNull;
import static org.mockito.BDDMockito.*; import static org.junit.Assert.assertSame;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.junit.Assert.assertTrue;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*; import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/** /**
* Tests with Java configuration. * Tests with Java configuration.
@@ -142,7 +145,7 @@ public class JavaConfigTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Autowired @Autowired
private RootConfig rootConfig; private RootConfig rootConfig;

View File

@@ -39,13 +39,15 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.request.ServletWebRequest; import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.support.GenericWebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.hamcrest.CoreMatchers.nullValue;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.junit.Assert.assertThat;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
/** /**
* Integration tests for SPR-13211 which verify that a custom mock request * Integration tests for SPR-13211 which verify that a custom mock request
@@ -107,7 +109,7 @@ public class CustomRequestAttributesRequestContextHolderTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public SingletonController singletonController() { public SingletonController singletonController() {

View File

@@ -43,14 +43,15 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
import static org.hamcrest.core.Is.*; import static org.hamcrest.core.Is.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
/** /**
* Tests for SPR-11441 (MockMvc accepts an already encoded URI). * Tests for SPR-11441 (MockMvc accepts an already encoded URI).
@@ -83,7 +84,7 @@ public class EncodedUriTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public MyController myController() { public MyController myController() {

View File

@@ -35,12 +35,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.options;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
/** /**
* Tests for SPR-10093 (support for OPTIONS requests). * Tests for SPR-10093 (support for OPTIONS requests).
@@ -75,7 +75,7 @@ public class HttpOptionsTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public MyController myController() { public MyController myController() {

View File

@@ -27,9 +27,9 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter; import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
/** /**
* Test for SPR-10277 (multiple method chaining when building MockMvc). * Test for SPR-10277 (multiple method chaining when building MockMvc).
@@ -55,6 +55,6 @@ public class MockMvcBuilderMethodChainTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
} }
} }

View File

@@ -17,7 +17,6 @@
package org.springframework.test.web.servlet.samples.spr; package org.springframework.test.web.servlet.samples.spr;
import java.io.IOException; import java.io.IOException;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
@@ -48,13 +47,16 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.filter.GenericFilterBean; import org.springframework.web.filter.GenericFilterBean;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.hamcrest.CoreMatchers.nullValue;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.junit.Assert.assertThat;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; import static org.junit.Assert.assertTrue;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
/** /**
* Integration tests for the following use cases. * Integration tests for the following use cases.
@@ -145,7 +147,7 @@ public class RequestContextHolderTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public SingletonController singletonController() { public SingletonController singletonController() {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2016 the original author or authors. * Copyright 2002-2017 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -38,14 +38,13 @@ import org.springframework.context.annotation.Import;
* </pre> * </pre>
* *
* <p>To customize the imported configuration, implement the interface * <p>To customize the imported configuration, implement the interface
* {@link WebMvcConfigurer} or more likely extend the empty method base class * {@link WebMvcConfigurer} and override individual methods, e.g.:
* {@link WebMvcConfigurerAdapter} and override individual methods, e.g.:
* *
* <pre class="code"> * <pre class="code">
* &#064;Configuration * &#064;Configuration
* &#064;EnableWebMvc * &#064;EnableWebMvc
* &#064;ComponentScan(basePackageClasses = MyConfiguration.class) * &#064;ComponentScan(basePackageClasses = MyConfiguration.class)
* public class MyConfiguration extends WebMvcConfigurerAdapter { * public class MyConfiguration implements WebMvcConfigurer {
* *
* &#064;Override * &#064;Override
* public void addFormatters(FormatterRegistry formatterRegistry) { * public void addFormatters(FormatterRegistry formatterRegistry) {
@@ -93,7 +92,6 @@ import org.springframework.context.annotation.Import;
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @since 3.1 * @since 3.1
* @see org.springframework.web.servlet.config.annotation.WebMvcConfigurer * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurer
* @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
* @see org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport
* @see org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration * @see org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration
*/ */

View File

@@ -168,7 +168,6 @@ import org.springframework.web.util.UrlPathHelper;
* @since 3.1 * @since 3.1
* @see EnableWebMvc * @see EnableWebMvc
* @see WebMvcConfigurer * @see WebMvcConfigurer
* @see WebMvcConfigurerAdapter
*/ */
public class WebMvcConfigurationSupport implements ApplicationContextAware, ServletContextAware { public class WebMvcConfigurationSupport implements ApplicationContextAware, ServletContextAware {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2016 the original author or authors. * Copyright 2002-2017 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -36,8 +36,7 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl
* *
* <p>{@code @EnableWebMvc}-annotated configuration classes may implement * <p>{@code @EnableWebMvc}-annotated configuration classes may implement
* this interface to be called back and given a chance to customize the * this interface to be called back and given a chance to customize the
* default configuration. Consider extending {@link WebMvcConfigurerAdapter}, * default configuration.
* which provides a stub implementation of all interface methods.
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Keith Donald * @author Keith Donald
@@ -57,17 +56,20 @@ public interface WebMvcConfigurer {
* </ul> * </ul>
* @since 4.0.3 * @since 4.0.3
*/ */
void configurePathMatch(PathMatchConfigurer configurer); default void configurePathMatch(PathMatchConfigurer configurer) {
}
/** /**
* Configure content negotiation options. * Configure content negotiation options.
*/ */
void configureContentNegotiation(ContentNegotiationConfigurer configurer); default void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
}
/** /**
* Configure asynchronous request handling options. * Configure asynchronous request handling options.
*/ */
void configureAsyncSupport(AsyncSupportConfigurer configurer); default void configureAsyncSupport(AsyncSupportConfigurer configurer) {
}
/** /**
* Configure a handler to delegate unhandled requests by forwarding to the * Configure a handler to delegate unhandled requests by forwarding to the
@@ -75,13 +77,15 @@ public interface WebMvcConfigurer {
* the {@link DispatcherServlet} is mapped to "/" thus overriding the * the {@link DispatcherServlet} is mapped to "/" thus overriding the
* Servlet container's default handling of static resources. * Servlet container's default handling of static resources.
*/ */
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer); default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
}
/** /**
* Add {@link Converter}s and {@link Formatter}s in addition to the ones * Add {@link Converter}s and {@link Formatter}s in addition to the ones
* registered by default. * registered by default.
*/ */
void addFormatters(FormatterRegistry registry); default void addFormatters(FormatterRegistry registry) {
}
/** /**
* Add Spring MVC lifecycle interceptors for pre- and post-processing of * Add Spring MVC lifecycle interceptors for pre- and post-processing of
@@ -95,20 +99,23 @@ public interface WebMvcConfigurer {
* {@link org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport * {@link org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport
* WebMvcConfigurationSupport} and then override {@code resourceHandlerMapping}. * WebMvcConfigurationSupport} and then override {@code resourceHandlerMapping}.
*/ */
void addInterceptors(InterceptorRegistry registry); default void addInterceptors(InterceptorRegistry registry) {
}
/** /**
* Add handlers to serve static resources such as images, js, and, css * Add handlers to serve static resources such as images, js, and, css
* files from specific locations under web application root, the classpath, * files from specific locations under web application root, the classpath,
* and others. * and others.
*/ */
void addResourceHandlers(ResourceHandlerRegistry registry); default void addResourceHandlers(ResourceHandlerRegistry registry) {
}
/** /**
* Configure cross origin requests processing. * Configure cross origin requests processing.
* @since 4.2 * @since 4.2
*/ */
void addCorsMappings(CorsRegistry registry); default void addCorsMappings(CorsRegistry registry) {
}
/** /**
* Configure simple automated controllers pre-configured with the response * Configure simple automated controllers pre-configured with the response
@@ -117,7 +124,8 @@ public interface WebMvcConfigurer {
* home page, perform simple site URL redirects, return a 404 status with * home page, perform simple site URL redirects, return a 404 status with
* HTML content, a 204 with no content, and more. * HTML content, a 204 with no content, and more.
*/ */
void addViewControllers(ViewControllerRegistry registry); default void addViewControllers(ViewControllerRegistry registry) {
}
/** /**
* Configure view resolvers to translate String-based view names returned from * Configure view resolvers to translate String-based view names returned from
@@ -125,25 +133,28 @@ public interface WebMvcConfigurer {
* implementations to perform rendering with. * implementations to perform rendering with.
* @since 4.1 * @since 4.1
*/ */
void configureViewResolvers(ViewResolverRegistry registry); default void configureViewResolvers(ViewResolverRegistry registry) {
}
/** /**
* Add resolvers to support custom controller method argument types. * Add resolvers to support custom controller method argument types.
* <p>This does not override the built-in support for resolving handler * <p>This does not override the built-in support for resolving handler
* method arguments. To customize the built-in support for argument * method arguments. To customize the built-in support for argument
* resolution, configure {@link RequestMappingHandlerAdapter} directly. * resolution, configure {@link RequestMappingHandlerAdapter} directly.
* @param argumentResolvers initially an empty list * @param resolvers initially an empty list
*/ */
void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers); default void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
}
/** /**
* Add handlers to support custom controller method return value types. * Add handlers to support custom controller method return value types.
* <p>Using this option does not override the built-in support for handling * <p>Using this option does not override the built-in support for handling
* return values. To customize the built-in support for handling return * return values. To customize the built-in support for handling return
* values, configure RequestMappingHandlerAdapter directly. * values, configure RequestMappingHandlerAdapter directly.
* @param returnValueHandlers initially an empty list * @param handlers initially an empty list
*/ */
void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers); default void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {
}
/** /**
* Configure the {@link HttpMessageConverter}s to use for reading or writing * Configure the {@link HttpMessageConverter}s to use for reading or writing
@@ -155,7 +166,8 @@ public interface WebMvcConfigurer {
* {@link #extendMessageConverters(java.util.List)} instead. * {@link #extendMessageConverters(java.util.List)} instead.
* @param converters initially an empty list of converters * @param converters initially an empty list of converters
*/ */
void configureMessageConverters(List<HttpMessageConverter<?>> converters); default void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
}
/** /**
* A hook for extending or modifying the list of converters after it has been * A hook for extending or modifying the list of converters after it has been
@@ -164,7 +176,8 @@ public interface WebMvcConfigurer {
* @param converters the list of configured converters to extend. * @param converters the list of configured converters to extend.
* @since 4.1.3 * @since 4.1.3
*/ */
void extendMessageConverters(List<HttpMessageConverter<?>> converters); default void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
}
/** /**
* Configure exception resolvers. * Configure exception resolvers.
@@ -177,21 +190,23 @@ public interface WebMvcConfigurer {
* <p>Alternatively you can use * <p>Alternatively you can use
* {@link #extendHandlerExceptionResolvers(List)} which allows you to extend * {@link #extendHandlerExceptionResolvers(List)} which allows you to extend
* or modify the list of exception resolvers configured by default. * or modify the list of exception resolvers configured by default.
* @param exceptionResolvers initially an empty list * @param resolvers initially an empty list
* @see #extendHandlerExceptionResolvers(List) * @see #extendHandlerExceptionResolvers(List)
* @see WebMvcConfigurationSupport#addDefaultHandlerExceptionResolvers(List) * @see WebMvcConfigurationSupport#addDefaultHandlerExceptionResolvers(List)
*/ */
void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers); default void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
}
/** /**
* Extending or modify the list of exception resolvers configured by default. * Extending or modify the list of exception resolvers configured by default.
* This can be useful for inserting a custom exception resolver without * This can be useful for inserting a custom exception resolver without
* interfering with default ones. * interfering with default ones.
* @param exceptionResolvers the list of configured resolvers to extend * @param resolvers the list of configured resolvers to extend
* @since 4.3 * @since 4.3
* @see WebMvcConfigurationSupport#addDefaultHandlerExceptionResolvers(List) * @see WebMvcConfigurationSupport#addDefaultHandlerExceptionResolvers(List)
*/ */
void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers); default void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
}
/** /**
* Provide a custom {@link Validator} instead of the one created by default. * Provide a custom {@link Validator} instead of the one created by default.
@@ -199,13 +214,17 @@ public interface WebMvcConfigurer {
* {@link org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean}. * {@link org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean}.
* Leave the return value as {@code null} to keep the default. * Leave the return value as {@code null} to keep the default.
*/ */
Validator getValidator(); default Validator getValidator() {
return null;
}
/** /**
* Provide a custom {@link MessageCodesResolver} for building message codes * Provide a custom {@link MessageCodesResolver} for building message codes
* from data binding and validation error codes. Leave the return value as * from data binding and validation error codes. Leave the return value as
* {@code null} to keep the default. * {@code null} to keep the default.
*/ */
MessageCodesResolver getMessageCodesResolver(); default MessageCodesResolver getMessageCodesResolver() {
return null;
}
} }

View File

@@ -32,7 +32,11 @@ import org.springframework.web.servlet.HandlerExceptionResolver;
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @since 3.1 * @since 3.1
* @deprecated as of 5.0 {@link WebMvcConfigurer} has default methods (made
* possible by a Java 8 baseline) and can be implemented directly without the
* need for this adapter
*/ */
@Deprecated
public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer { public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {
/** /**

View File

@@ -55,7 +55,7 @@ import org.springframework.util.StringUtils;
* <p>In order to serve manifest files with the proper {@code "text/manifest"} content type, * <p>In order to serve manifest files with the proper {@code "text/manifest"} content type,
* it is required to configure it with * it is required to configure it with
* {@code contentNegotiationConfigurer.mediaType("appcache", MediaType.valueOf("text/manifest")} * {@code contentNegotiationConfigurer.mediaType("appcache", MediaType.valueOf("text/manifest")}
* in a {@code WebMvcConfigurerAdapter}. * in a {@code WebMvcConfigurer}.
* *
* @author Brian Clozel * @author Brian Clozel
* @since 4.1 * @since 4.1

View File

@@ -46,8 +46,13 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl
import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver; import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver;
import org.springframework.web.util.UrlPathHelper; import org.springframework.web.util.UrlPathHelper;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
import static org.mockito.BDDMockito.*; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.mock;
import static org.mockito.BDDMockito.verify;
/** /**
* A test fixture for {@link DelegatingWebMvcConfiguration} tests. * A test fixture for {@link DelegatingWebMvcConfiguration} tests.
@@ -118,7 +123,7 @@ public class DelegatingWebMvcConfigurationTests {
final HttpMessageConverter customConverter = mock(HttpMessageConverter.class); final HttpMessageConverter customConverter = mock(HttpMessageConverter.class);
final StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(); final StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
List<WebMvcConfigurer> configurers = new ArrayList<>(); List<WebMvcConfigurer> configurers = new ArrayList<>();
configurers.add(new WebMvcConfigurerAdapter() { configurers.add(new WebMvcConfigurer() {
@Override @Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(stringConverter); converters.add(stringConverter);
@@ -176,7 +181,7 @@ public class DelegatingWebMvcConfigurationTests {
@Test @Test
public void configureExceptionResolvers() throws Exception { public void configureExceptionResolvers() throws Exception {
List<WebMvcConfigurer> configurers = new ArrayList<>(); List<WebMvcConfigurer> configurers = new ArrayList<>();
configurers.add(new WebMvcConfigurerAdapter() { configurers.add(new WebMvcConfigurer() {
@Override @Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) { public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
exceptionResolvers.add(new DefaultHandlerExceptionResolver()); exceptionResolvers.add(new DefaultHandlerExceptionResolver());
@@ -195,7 +200,7 @@ public class DelegatingWebMvcConfigurationTests {
final UrlPathHelper pathHelper = mock(UrlPathHelper.class); final UrlPathHelper pathHelper = mock(UrlPathHelper.class);
List<WebMvcConfigurer> configurers = new ArrayList<>(); List<WebMvcConfigurer> configurers = new ArrayList<>();
configurers.add(new WebMvcConfigurerAdapter() { configurers.add(new WebMvcConfigurer() {
@Override @Override
public void configurePathMatch(PathMatchConfigurer configurer) { public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseRegisteredSuffixPatternMatch(true) configurer.setUseRegisteredSuffixPatternMatch(true)

View File

@@ -40,7 +40,7 @@ import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
import org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer; import org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer; import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
/** /**
* Integration tests for view resolution with {@code @EnableWebMvc}. * Integration tests for view resolution with {@code @EnableWebMvc}.
@@ -128,7 +128,7 @@ public class ViewResolutionIntegrationTests {
} }
@EnableWebMvc @EnableWebMvc
static abstract class AbstractWebConfig extends WebMvcConfigurerAdapter { static abstract class AbstractWebConfig implements WebMvcConfigurer {
@Bean @Bean
public SampleController sampleController() { public SampleController sampleController() {

View File

@@ -18,7 +18,6 @@ package org.springframework.web.servlet.config.annotation;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@@ -363,7 +362,7 @@ public class WebMvcConfigurationSupportTests {
@EnableWebMvc @EnableWebMvc
@Configuration @Configuration
static class CustomViewResolverOrderConfig extends WebMvcConfigurerAdapter { static class CustomViewResolverOrderConfig implements WebMvcConfigurer {
@Override @Override
public void configureViewResolvers(ViewResolverRegistry registry) { public void configureViewResolvers(ViewResolverRegistry registry) {
@@ -374,7 +373,7 @@ public class WebMvcConfigurationSupportTests {
@EnableWebMvc @EnableWebMvc
@Configuration @Configuration
static class CustomArgumentResolverConfig extends WebMvcConfigurerAdapter { static class CustomArgumentResolverConfig implements WebMvcConfigurer {
@Override @Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {

View File

@@ -50,13 +50,21 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
import static org.hamcrest.Matchers.*; import static org.hamcrest.Matchers.contains;
import static org.junit.Assert.*; import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.*; import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromController;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMethodCall;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMethodName;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.on;
/** /**
* Unit tests for {@link org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder}. * Unit tests for {@link org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder}.
@@ -500,7 +508,7 @@ public class MvcUriComponentsBuilderTests {
@EnableWebMvc @EnableWebMvc
static class WebConfig extends WebMvcConfigurerAdapter { static class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public PersonsAddressesController controller() { public PersonsAddressesController controller() {

View File

@@ -65,10 +65,10 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver; import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
import static org.springframework.web.bind.annotation.RequestMethod.*; import static org.springframework.web.bind.annotation.RequestMethod.POST;
/** /**
* Test access to parts of a multipart request with {@link RequestPart}. * Test access to parts of a multipart request with {@link RequestPart}.
@@ -198,7 +198,7 @@ public class RequestPartIntegrationTests {
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
static class RequestPartTestConfig extends WebMvcConfigurerAdapter { static class RequestPartTestConfig implements WebMvcConfigurer {
@Bean @Bean
public RequestPartTestController controller() { public RequestPartTestController controller() {

View File

@@ -125,7 +125,7 @@ Enabling CORS for the whole application is as simple as:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addCorsMappings(CorsRegistry registry) { public void addCorsMappings(CorsRegistry registry) {
@@ -142,7 +142,7 @@ specific path pattern:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addCorsMappings(CorsRegistry registry) { public void addCorsMappings(CorsRegistry registry) {

View File

@@ -4522,7 +4522,7 @@ a `CacheControl` instance, which supports more specific directives:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -4935,7 +4935,7 @@ It also automatically registers the following well-known modules if they are det
[[mvc-config-customize]] [[mvc-config-customize]]
=== Customizing the Provided Configuration === Customizing the Provided Configuration
To customize the default configuration in Java you simply implement the To customize the default configuration in Java you simply implement the
`WebMvcConfigurer` interface or more likely extend the class `WebMvcConfigurerAdapter` `WebMvcConfigurer` interface or more likely extend the class `WebMvcConfigurer`
and override the methods you need: and override the methods you need:
[source,java,indent=0] [source,java,indent=0]
@@ -4943,7 +4943,7 @@ and override the methods you need:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
// Override configuration methods... // Override configuration methods...
@@ -4970,7 +4970,7 @@ register custom formatters and converters, override the `addFormatters` method:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addFormatters(FormatterRegistry registry) { public void addFormatters(FormatterRegistry registry) {
@@ -5064,7 +5064,7 @@ Alternatively you can configure your own global `Validator` instance:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public Validator getValidator(); { public Validator getValidator(); {
@@ -5129,7 +5129,7 @@ An example of registering interceptors in Java:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
@@ -5183,7 +5183,7 @@ Below is an example of customizing content negotiation options through the MVC J
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
@@ -5242,7 +5242,7 @@ An example of forwarding a request for `"/"` to a view called `"home"` in Java:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addViewControllers(ViewControllerRegistry registry) { public void addViewControllers(ViewControllerRegistry registry) {
@@ -5274,7 +5274,7 @@ JSON rendering:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureViewResolvers(ViewResolverRegistry registry) { public void configureViewResolvers(ViewResolverRegistry registry) {
@@ -5331,7 +5331,7 @@ In Java config simply add the respective "Configurer" bean:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureViewResolvers(ViewResolverRegistry registry) { public void configureViewResolvers(ViewResolverRegistry registry) {
@@ -5370,7 +5370,7 @@ to serve resource requests with a URL pattern of `/resources/{asterisk}{asterisk
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -5396,7 +5396,7 @@ browser cache and a reduction in HTTP requests made by the browser:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -5430,7 +5430,7 @@ serving of resources from both the web application root and from a known path of
---- ----
@EnableWebMvc @EnableWebMvc
@Configuration @Configuration
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -5477,7 +5477,7 @@ Java config example;
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -5544,7 +5544,7 @@ To enable the feature using the default setup use:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
@@ -5576,7 +5576,7 @@ then the default Servlet's name must be explicitly provided as in the following
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
@@ -5609,7 +5609,7 @@ Below is an example in Java config:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configurePathMatch(PathMatchConfigurer configurer) { public void configurePathMatch(PathMatchConfigurer configurer) {
@@ -5658,9 +5658,9 @@ And the same in XML, use the `<mvc:path-matching>` element:
=== Message Converters === Message Converters
Customization of `HttpMessageConverter` can be achieved in Java config by overriding Customization of `HttpMessageConverter` can be achieved in Java config by overriding
{api-spring-framework}/web/servlet/config/annotation/WebMvcConfigurerAdapter.html#configureMessageConverters-java.util.List-[`configureMessageConverters()`] {api-spring-framework}/web/servlet/config/annotation/WebMvcConfigurer.html#configureMessageConverters-java.util.List-[`configureMessageConverters()`]
if you want to replace the default converters created by Spring MVC, or by overriding if you want to replace the default converters created by Spring MVC, or by overriding
{api-spring-framework}/web/servlet/config/annotation/WebMvcConfigurerAdapter.html#extendMessageConverters-java.util.List-[`extendMessageConverters()`] {api-spring-framework}/web/servlet/config/annotation/WebMvcConfigurer.html#extendMessageConverters-java.util.List-[`extendMessageConverters()`]
if you just want to customize them or add additional converters to the default ones. if you just want to customize them or add additional converters to the default ones.
Below is an example that adds Jackson JSON and XML converters with a customized Below is an example that adds Jackson JSON and XML converters with a customized
@@ -5671,7 +5671,7 @@ Below is an example that adds Jackson JSON and XML converters with a customized
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter { public class WebConfiguration implements WebMvcConfigurer {
@Override @Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
@@ -5779,7 +5779,7 @@ or a single `@EnableWebMvc` annotated class, since they both register the same u
beans. beans.
Modifying beans in this way does not prevent you from using any of the higher-level Modifying beans in this way does not prevent you from using any of the higher-level
constructs shown earlier in this section. `WebMvcConfigurerAdapter` subclasses and constructs shown earlier in this section. `WebMvcConfigurer` subclasses and
`WebMvcConfigurer` implementations are still being used. `WebMvcConfigurer` implementations are still being used.
==== ====

View File

@@ -47,7 +47,7 @@ Configuring the Groovy Markup Template Engine is quite easy:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Override @Override
public void configureViewResolvers(ViewResolverRegistry registry) { public void configureViewResolvers(ViewResolverRegistry registry) {
@@ -1385,7 +1385,7 @@ provided with Java 8+, you should declare the following configuration:
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class MustacheConfig extends WebMvcConfigurerAdapter { public class MustacheConfig implements WebMvcConfigurer {
@Override @Override
public void configureViewResolvers(ViewResolverRegistry registry) { public void configureViewResolvers(ViewResolverRegistry registry) {
@@ -1472,7 +1472,7 @@ browser facilities not available in the server-side script engine.
---- ----
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
public class MustacheConfig extends WebMvcConfigurerAdapter { public class MustacheConfig implements WebMvcConfigurer {
@Override @Override
public void configureViewResolvers(ViewResolverRegistry registry) { public void configureViewResolvers(ViewResolverRegistry registry) {
@@ -1746,7 +1746,7 @@ regular MVC annotation configuration.
@EnableWebMvc @EnableWebMvc
@ComponentScan @ComponentScan
@Configuration @Configuration
public class WebConfig extends WebMvcConfigurerAdapter { public class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public XsltViewResolver xsltViewResolver() { public XsltViewResolver xsltViewResolver() {