先来做一次自定义让大家来感受一下
这里提前给大家准备好的一个类
创建两个目录一个是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为结尾的。
结束