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



先来做一次自定义让大家来感受一下
这里提前给大家准备好的一个类

创建两个目录一个是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为结尾的。




 

结束


posted @ 2020-05-16 08:44  高山-景行  阅读(773)  评论(0编辑  收藏  举报