Spring 带有自定义分隔符的 AntPathMatcher 行为异常
Spring AntPathMatcher with a custom separator behaves strangely
我遇到 Spring 引导版本 2.5.5
的 AntPathMatcher
问题。如果 pattern
和 path
相等并且其中 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
被拆分为两个字符串:consen
和 reg
.
也许您打算使用制表符作为分隔符:
new AntPathMatcher("\t").match("consentreg", "consentreg"); // true
我遇到 Spring 引导版本 2.5.5
的 AntPathMatcher
问题。如果 pattern
和 path
相等并且其中 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
被拆分为两个字符串:consen
和 reg
.
也许您打算使用制表符作为分隔符:
new AntPathMatcher("\t").match("consentreg", "consentreg"); // true