是否可以在springMVC@PathVariable上设置全局regexp模式?

是否可以在springMVC@PathVariable上设置全局regexp模式?,regex,spring,spring-mvc,Regex,Spring,Spring Mvc,就像在标题中一样,您知道在spring的@RequestMapping下为所有@PathVariable设置全局regexp的一些可能性吗?例如: @RequestMapping(value = "/view/{id:[a-z]{5}|[1-9]{7}}", method = RequestMethod.GET) @PreAuthorize("hasRole('XXXX')") public String viewId(@PathVariable String id, Model

就像在标题中一样,您知道在spring的
@RequestMapping
下为所有
@PathVariable
设置全局regexp的一些可能性吗?例如:

@RequestMapping(value = "/view/{id:[a-z]{5}|[1-9]{7}}", method = RequestMethod.GET)
    @PreAuthorize("hasRole('XXXX')")
    public String viewId(@PathVariable String id, Model model) {
        ...
    }
我不想在本地将regexp设置为
{id:[a-z]{5}|[1-9]{7}}
,但我想在5个地方设置它。此外,我还有配置,我不想更改:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.xxxx.yyy.zzz.controller.formatters"})
public class MediaPortalWebConfig extends WebMvcConfigurationSupport {
@Override
    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping();
        requestMappingHandlerMapping.setUseSuffixPatternMatch(false);
        return requestMappingHandlerMapping;
    }
}

所以我知道了
setUseSuffixPatternMatch(false)的含义并且必须保持在Spring配置中。

< p>您可以通过扩展默认和重写方法来编写自定义的路径匹配器,例如“代码> CustomRegexPathMatcher <代码>,以便在执行与URL< /P>匹配时考虑您的正则表达式。 比你想的要多

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.xxxx.yyy.zzz.controller.formatters"})
public class MediaPortalWebConfig extends WebMvcConfigurationSupport {
@Override
    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping();
        requestMappingHandlerMapping.setUseSuffixPatternMatch(false);
        requestMappingHandlerMapping.setPathMatcher(new CustomRegexPathMatcher());
        return requestMappingHandlerMapping;
    }
}