119119import org .springframework .web .servlet .resource .EncodedResourceResolver ;
120120import org .springframework .web .servlet .resource .ResourceHttpRequestHandler ;
121121import org .springframework .web .servlet .resource .ResourceResolver ;
122+ import org .springframework .web .servlet .resource .ResourceUrlProvider ;
122123import org .springframework .web .servlet .resource .VersionResourceResolver ;
123124import org .springframework .web .servlet .view .BeanNameViewResolver ;
124125import org .springframework .web .servlet .view .ContentNegotiatingViewResolver ;
@@ -466,7 +467,7 @@ static final class FaviconRequestHandler extends ResourceHttpRequestHandler {
466467 /**
467468 * Configuration equivalent to {@code @EnableWebMvc}.
468469 */
469- @ Configuration
470+ @ Configuration ( proxyBeanMethods = false )
470471 public static class EnableWebMvcConfiguration extends DelegatingWebMvcConfiguration {
471472
472473 private final WebMvcProperties mvcProperties ;
@@ -486,8 +487,12 @@ public EnableWebMvcConfiguration(
486487
487488 @ Bean
488489 @ Override
489- public RequestMappingHandlerAdapter requestMappingHandlerAdapter () {
490- RequestMappingHandlerAdapter adapter = super .requestMappingHandlerAdapter ();
490+ public RequestMappingHandlerAdapter requestMappingHandlerAdapter (
491+ ContentNegotiationManager mvcContentNegotiationManager ,
492+ FormattingConversionService mvcConversionService ,
493+ Validator mvcValidator ) {
494+ RequestMappingHandlerAdapter adapter = super .requestMappingHandlerAdapter (
495+ mvcContentNegotiationManager , mvcConversionService , mvcValidator );
491496 adapter .setIgnoreDefaultModelOnRedirect (this .mvcProperties == null
492497 || this .mvcProperties .isIgnoreDefaultModelOnRedirect ());
493498 return adapter ;
@@ -505,9 +510,13 @@ protected RequestMappingHandlerAdapter createRequestMappingHandlerAdapter() {
505510 @ Bean
506511 @ Primary
507512 @ Override
508- public RequestMappingHandlerMapping requestMappingHandlerMapping () {
513+ public RequestMappingHandlerMapping requestMappingHandlerMapping (
514+ ContentNegotiationManager mvcContentNegotiationManager ,
515+ FormattingConversionService mvcConversionService ,
516+ ResourceUrlProvider mvcResourceUrlProvider ) {
509517 // Must be @Primary for MvcUriComponentsBuilder to work
510- return super .requestMappingHandlerMapping ();
518+ return super .requestMappingHandlerMapping (mvcContentNegotiationManager ,
519+ mvcConversionService , mvcResourceUrlProvider );
511520 }
512521
513522 @ Bean
@@ -539,12 +548,15 @@ protected RequestMappingHandlerMapping createRequestMappingHandlerMapping() {
539548 }
540549
541550 @ Override
542- protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer () {
551+ protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer (
552+ FormattingConversionService mvcConversionService ,
553+ Validator mvcValidator ) {
543554 try {
544555 return this .beanFactory .getBean (ConfigurableWebBindingInitializer .class );
545556 }
546557 catch (NoSuchBeanDefinitionException ex ) {
547- return super .getConfigurableWebBindingInitializer ();
558+ return super .getConfigurableWebBindingInitializer (mvcConversionService ,
559+ mvcValidator );
548560 }
549561 }
550562
@@ -558,12 +570,9 @@ protected ExceptionHandlerExceptionResolver createExceptionHandlerExceptionResol
558570 }
559571
560572 @ Override
561- protected void configureHandlerExceptionResolvers (
573+ protected void extendHandlerExceptionResolvers (
562574 List <HandlerExceptionResolver > exceptionResolvers ) {
563- super .configureHandlerExceptionResolvers (exceptionResolvers );
564- if (exceptionResolvers .isEmpty ()) {
565- addDefaultHandlerExceptionResolvers (exceptionResolvers );
566- }
575+ super .extendHandlerExceptionResolvers (exceptionResolvers );
567576 if (this .mvcProperties .isLogResolvedException ()) {
568577 for (HandlerExceptionResolver resolver : exceptionResolvers ) {
569578 if (resolver instanceof AbstractHandlerExceptionResolver ) {
0 commit comments