Skip to content

Commit f221061

Browse files
committed
Avoid bean method proxying in WebMVC and WebFlux config
This commit applies changes similar to what's been done in gh-9068, for MVC and WebFlux configurations. This is now possible thanks to the changes done in Spring Framework in spring-projects/spring-framework#22596 Fixes gh-16427
1 parent edb5937 commit f221061

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ private void customizeResourceHandlerRegistration(
211211
/**
212212
* Configuration equivalent to {@code @EnableWebFlux}.
213213
*/
214-
@Configuration
214+
@Configuration(proxyBeanMethods = false)
215215
public static class EnableWebFluxConfiguration
216216
extends DelegatingWebFluxConfiguration {
217217

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
import org.springframework.web.servlet.resource.EncodedResourceResolver;
120120
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
121121
import org.springframework.web.servlet.resource.ResourceResolver;
122+
import org.springframework.web.servlet.resource.ResourceUrlProvider;
122123
import org.springframework.web.servlet.resource.VersionResourceResolver;
123124
import org.springframework.web.servlet.view.BeanNameViewResolver;
124125
import 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

Comments
 (0)