zoukankan      html  css  js  c++  java
  • 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为结尾的。




     

    结束


  • 相关阅读:
    bzoj4571: [Scoi2016]美味
    hdu2929 Bigger Is Better
    将博客搬家到博客园了
    BZOJ4567[Scoi2016]背单词
    BZOJ 4568 幸运数字
    BZOJ 4569 萌萌哒
    BZOJ4570: [Scoi2016]妖怪
    poj3468 A Simple Problem with Integers(zkw区间修改模板)
    spoj 8222
    hdu 4918
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12898696.html
Copyright © 2011-2022 走看看