Spring 带有自定义分隔符的 AntPathMatcher 行为异常

Spring AntPathMatcher with a custom separator behaves strangely

我遇到 Spring 引导版本 2.5.5AntPathMatcher 问题。如果 patternpath 相等并且其中 none 包含 Ant 特定字符(即假设它包含仅限字母数字字符)。

以下几行证明假设失败:

new AntPathMatcher().match("consent", "consent");             // true
new AntPathMatcher().match("consentreg", "consentreg");       // true

new AntPathMatcher("\t").match("consent", "consent");        // true
new AntPathMatcher("\t").match("consentreg", "consentreg");  // false

我是否错误地假设了这种行为?我在这里错过了什么?

您不能在 AntPathMatcher 中使用多字符分隔符。路径分隔符作为 delimiters 参数传递给 StringUtils.tokenizeToStringArray(String, String, boolean, boolean)。此参数被描述为“分隔符,组合为 String(每个字符都被单独视为分隔符)”。在当前形式中,您的代码告诉 AntPathMatcher 使用 \t 作为路径分隔符。结果,consentreg 被拆分为两个字符串:consenreg.

也许您打算使用制表符作为分隔符:

new AntPathMatcher("\t").match("consentreg", "consentreg");  // true