《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 cnblogs.com/amyzhu/archive/2019/09/07/11481680.html 「AmyZYX」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

背景

最近有一个功能设计path匹配,开发说支持ant匹配,这是我第一次听说这个词,赶紧补一下功课。

Ant匹配规则

1.前言

(1)SpringMVC的路径匹配规则是按照Ant来的,实际上不只是SpringMVC,整个Spring框架的路径解析都是按照Ant的风格来的。

(2)AntPathMatcher不仅可以匹配Spring的@RequestMapping路径,也可以用来匹配各种字符串,包括文件路径等。

2.基本规则

wildcard description
? 匹配任何单字符
* 匹配0或者任务数量的字符
** 匹配0或者更多的目录
{spring:[a-z]+} 将正则表达式[a-z]+匹配到的值,赋值给名为sprint的路径变量(4.3引入功能)

注意:遵循最长匹配原则(has more characters),即越精确的模式越会被优先匹配到。

3.例子

路径 说明
/app/*.x 匹配所有在app路径下的.x文件
/app/p?ttern 匹配/app/pattern、/app/pXttern,不匹配/app/pttern
/**/exapmplte 匹配example结尾的路径
/*/.jsp 匹配任何的.jsp文件
文章目录
  1. 1. 背景
  2. 2. Ant匹配规则
    1. 2.1. 1.前言
    2. 2.2. 2.基本规则
    3. 2.3. 3.例子