javax.ws.rs.Path注解@Path的工作原理解析

这个annotation和Spring里的@RequestMapping作用完全一样。下图是Spring里的annotation:

javax.ws.rs.Path注解@Path的工作原理解析

在Eclipse里单击练习代码的@Path:

javax.ws.rs.Path注解@Path的工作原理解析

发现这个path的value还支持正则表达式:

javax.ws.rs.Path注解@Path的工作原理解析

所以我用了这样一个正则表达式:

javax.ws.rs.Path注解@Path的工作原理解析

测试成功:

javax.ws.rs.Path注解@Path的工作原理解析

用这个测试失败,这是我期望的:http://localhost:9498//hello/3
从Eclipse的output里还找到了框架解析这个@Path的入口代码,一举两得。在这个入口方法设置断点之后,

javax.ws.rs.Path注解@Path的工作原理解析

然后就可以开始debug了:

javax.ws.rs.Path注解@Path的工作原理解析

正则表达式是怎么被evaluate的

我们在应用代码里指定的正则表达式总归要在某个地方被框架用到,通过上面的方法已经可以设断点debug了:
这就是我们应用指定的正则表达式:

javax.ws.rs.Path注解@Path的工作原理解析

这是我测试传入的路径:/3, 显然正则表达式instance的match()方法返回false,

javax.ws.rs.Path注解@Path的工作原理解析

因此最后是404 error,

javax.ws.rs.Path注解@Path的工作原理解析

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
javax.ws.rs.Path注解@Path的工作原理解析