我正在尝试找到一种方法来全局设置 AutoGrowNestedPaths=false 。
我目前正在使用基于 Java 的配置方法和扩展 WebMvcConfigurerAdapter 的 WebConfig。
我正在尝试找到一种方法来全局设置 AutoGrowNestedPaths=false 。
我目前正在使用基于 Java 的配置方法和扩展 WebMvcConfigurerAdapter 的 WebConfig。
尽管 Biju 的回答为我指明了正确的方向,但示例代码可以更简洁,避免重新配置所有内容。这是我现在使用的代码:
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
RequestMappingHandlerAdapter bean = super.requestMappingHandlerAdapter();
ConfigurableWebBindingInitializer webBindingInitializer = (ConfigurableWebBindingInitializer) bean.getWebBindingInitializer();
webBindingInitializer.setAutoGrowNestedPaths(false);
return bean;
}
注意,一个坑爹的是Spring的WebMvcConfigurationSupport不能直接配置WebBindingInitializer。另请参阅https://jira.springsource.org/browse/SPR-8984
您可以通过直接从WebMvcConfigurationSupport扩展您的 Web 配置来做到这一点:
@Configuration
public class WebConfiguration extends WebMvcConfigurationSupport {
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
ConfigurableWebBindingInitializer webBindingInitializer = new ConfigurableWebBindingInitializer();
webBindingInitializer.setConversionService(mvcConversionService());
webBindingInitializer.setValidator(mvcValidator());
webBindingInitializer.setAutoGrowNestedPaths(false);
List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<HandlerMethodArgumentResolver>();
addArgumentResolvers(argumentResolvers);
List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<HandlerMethodReturnValueHandler>();
addReturnValueHandlers(returnValueHandlers);
RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
adapter.setMessageConverters(getMessageConverters());
adapter.setWebBindingInitializer(webBindingInitializer);
adapter.setCustomArgumentResolvers(argumentResolvers);
adapter.setCustomReturnValueHandlers(returnValueHandlers);
return adapter;
}
}