Avoid calling other bean methods in web config
This commit changes the main configuration classes for Spring MVC and Spring WebFlux to not call other bean methods when setting up the web infrastructure. This allows configuration classes extending `DelegatingWebFluxConfiguration` and `DelegatingWebMvcConfiguration` to opt-in the lite-mode, as introduced in gh-22461.
This commit is contained in:
@@ -62,6 +62,7 @@ import org.springframework.web.servlet.handler.MappedInterceptor;
|
||||
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
import org.springframework.web.servlet.resource.ResourceUrlProvider;
|
||||
import org.springframework.web.servlet.support.SessionFlashMapManager;
|
||||
import org.springframework.web.servlet.theme.FixedThemeResolver;
|
||||
import org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator;
|
||||
@@ -374,7 +375,16 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||
wac.addBeans(this.controllers);
|
||||
wac.addBeans(this.controllerAdvice);
|
||||
|
||||
RequestMappingHandlerMapping hm = config.getHandlerMapping();
|
||||
FormattingConversionService mvcConversionService = config.mvcConversionService();
|
||||
wac.addBean("mvcConversionService", mvcConversionService);
|
||||
ResourceUrlProvider resourceUrlProvider = config.mvcResourceUrlProvider();
|
||||
wac.addBean("mvcResourceUrlProvider", resourceUrlProvider);
|
||||
ContentNegotiationManager mvcContentNegotiationManager = config.mvcContentNegotiationManager();
|
||||
wac.addBean("mvcContentNegotiationManager", mvcContentNegotiationManager);
|
||||
Validator mvcValidator = config.mvcValidator();
|
||||
wac.addBean("mvcValidator", mvcValidator);
|
||||
|
||||
RequestMappingHandlerMapping hm = config.getHandlerMapping(mvcConversionService, resourceUrlProvider);
|
||||
if (sc != null) {
|
||||
hm.setServletContext(sc);
|
||||
}
|
||||
@@ -382,7 +392,8 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||
hm.afterPropertiesSet();
|
||||
wac.addBean("requestMappingHandlerMapping", hm);
|
||||
|
||||
RequestMappingHandlerAdapter ha = config.requestMappingHandlerAdapter();
|
||||
RequestMappingHandlerAdapter ha = config.requestMappingHandlerAdapter(mvcContentNegotiationManager,
|
||||
mvcConversionService, mvcValidator);
|
||||
if (sc != null) {
|
||||
ha.setServletContext(sc);
|
||||
}
|
||||
@@ -390,7 +401,7 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||
ha.afterPropertiesSet();
|
||||
wac.addBean("requestMappingHandlerAdapter", ha);
|
||||
|
||||
wac.addBean("handlerExceptionResolver", config.handlerExceptionResolver());
|
||||
wac.addBean("handlerExceptionResolver", config.handlerExceptionResolver(mvcContentNegotiationManager));
|
||||
|
||||
wac.addBeans(initViewResolvers(wac));
|
||||
wac.addBean(DispatcherServlet.LOCALE_RESOLVER_BEAN_NAME, this.localeResolver);
|
||||
@@ -430,13 +441,15 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||
/** Using the MVC Java configuration as the starting point for the "standalone" setup. */
|
||||
private class StandaloneConfiguration extends WebMvcConfigurationSupport {
|
||||
|
||||
public RequestMappingHandlerMapping getHandlerMapping() {
|
||||
public RequestMappingHandlerMapping getHandlerMapping(
|
||||
FormattingConversionService mvcConversionService,
|
||||
ResourceUrlProvider mvcResourceUrlProvider) {
|
||||
RequestMappingHandlerMapping handlerMapping = handlerMappingFactory.get();
|
||||
handlerMapping.setEmbeddedValueResolver(new StaticStringValueResolver(placeholderValues));
|
||||
handlerMapping.setUseSuffixPatternMatch(useSuffixPatternMatch);
|
||||
handlerMapping.setUseTrailingSlashMatch(useTrailingSlashPatternMatch);
|
||||
handlerMapping.setOrder(0);
|
||||
handlerMapping.setInterceptors(getInterceptors());
|
||||
handlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
|
||||
if (removeSemicolonContent != null) {
|
||||
handlerMapping.setRemoveSemicolonContent(removeSemicolonContent);
|
||||
}
|
||||
@@ -506,7 +519,7 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||
}
|
||||
for (HandlerExceptionResolver resolver : handlerExceptionResolvers) {
|
||||
if (resolver instanceof ApplicationContextAware) {
|
||||
ApplicationContext applicationContext = getApplicationContext();
|
||||
ApplicationContext applicationContext = getApplicationContext();
|
||||
if (applicationContext != null) {
|
||||
((ApplicationContextAware) resolver).setApplicationContext(applicationContext);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user