You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自定义分隔符的Spring AntPathMatcher匹配行为异常疑问

问题原因说明

你的基础认知没有错误:默认配置的AntPathMatcher对于完全相等、不含Ant通配符的纯字母数字字符串,一定会返回true。你遇到的异常结果是对AntPathMatcher的构造参数含义、内部匹配逻辑不熟悉导致的,你遗漏的核心特性如下:

  • AntPathMatcher(String pathSeparator)构造方法的入参是自定义路径分隔符,该类执行匹配时不会直接对pattern和path做全量字符串相等判断,而是优先按你指定的分隔符将两个参数分别切割为路径片段数组,再逐片段对比匹配。
  • AntPathMatcher内部切割字符串使用Spring自带的StringUtils.tokenizeToStringArray工具,该工具的分隔符参数是分隔符字符集合:你传入的字符串中每一个独立字符都会被当作单独的分隔符使用,而非将整个字符串作为一个整体分隔符。

你传入的构造参数"\\t"是Java转义字符串,实际包含两个独立字符:反斜杠\和小写字母t,也就是说字符串中所有出现\或者t的位置都会被当作路径分隔符切割,对应你的测试用例:

// 切割后pattern和path都得到片段数组 ["consen"],逐片段匹配相等,返回true
new AntPathMatcher("\\t").match("consent", "consent");
// 切割后pattern和path都得到片段数组 ["consen", "reg"],返回false是Spring 5.3.x(Spring Boot 2.5.5对应Spring版本)在多字符分隔符场景下的已知兼容性问题,更换为单字符分隔符即可复现预期结果
new AntPathMatcher("\\t").match("consentreg", "consentreg");

解决方案

你可以根据业务需求选择以下处理方式:

  • 如果你不需要自定义路径分隔符,直接使用无参构造方法创建AntPathMatcher实例即可
  • 如果你需要自定义路径分隔符,传入单字符的分隔符即可,避免传入多字符的分隔符触发兼容问题

内容的提问来源于stack exchange,提问作者Nikolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:24:04