首页 > 其他 > 详细

15-5 Gateway核心之Predicate讲解及自定义演示

时间:2020-05-16 09:49:54      阅读:69      评论:0      收藏:0      [点我收藏+]


技术分享图片
先来做一次自定义让大家来感受一下
这里提前给大家准备好的一个类
技术分享图片
创建两个目录一个是conf、predicates
技术分享图片

技术分享图片

首先这里是有一个static的内部类
技术分享图片
前端是断言的名字,后面是断言的值
技术分享图片
上面的断言的值,谁来承载它呢?config里面的属性值来承载,我们是判断当前时间,有没有在写的时间之后,
技术分享图片
我们在这里定义一个after: 2019-12-12 在这个日期之后就被承载。
技术分享图片

技术分享图片
里面的泛型是Config类
技术分享图片

技术分享图片

有可能会有两个值,就是在这两个日期之间。这些请求都要进入我们的路由,
技术分享图片
假设第一个参数对应的是我们Config里面的Datetime
技术分享图片
哪一个对应的参数是datetime1哪一个对应的是2就是在下面这里去定义的
技术分享图片
假设我们还有一个datetim2 就在这后面多加一个参数。这里报错是因为我们用了singleton
技术分享图片

再换回来
技术分享图片

技术分享图片

下面就是我们具体的处理规则。先打印了config的内容,然后转换了日期格式。
技术分享图片
这里还是换成一个时间
技术分享图片
获取当前时间的毫秒值
技术分享图片
转成当前时间的毫秒值,然后两个时间做比较。大于毫秒值就返回true。小于等于就会返回false
技术分享图片
predicate本身是断言,在jdk8以后我们其实就有用到这部分断言了。结果返回的true和false就是断言的true和false。就是说当你返回true就表示路由被匹配到了。如果返回false就代表。路由没有被匹配到。
技术分享图片

启用断言

技术分享图片

技术分享图片
这样就启动好了
技术分享图片
为啥一定要用RoutePredicateFactory为结尾定义类呢?因为结尾之前的就是我们的key值。
技术分享图片

技术分享图片
技术分享图片

技术分享图片

改成2028年
技术分享图片

技术分享图片
没有跳转,应该是缓存的问题,可以看到后端的控制台都没有输出任何
技术分享图片
再换 一个地址,防止它缓存
技术分享图片

总结

这里有个Config类,需要入参,需要一个就定义一个,需要俩就定义俩,并提供getter和setter
技术分享图片
按你入参的顺序,分别给你匹配到你对应的属性里
技术分享图片
第一个参数就是你的第一入参的属性名
技术分享图片
紧接着这里写匹配逻辑,只要最终返回true就表示是成功的。
技术分享图片
还有个注意的点就是类名要以RoutePredicateFactory为结尾的。
技术分享图片



 

结束


15-5 Gateway核心之Predicate讲解及自定义演示

原文:https://www.cnblogs.com/wangjunwei/p/12898696.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!