日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory

發布時間:2025/3/21 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 需求
  • 三部曲
    • 第一步 搞配置類
    • 第二步 搞自定義謂詞工廠
    • 第三部 搞配置
    • 驗證
  • 源碼


需求

我們看了官方提供的幾個例子,如果都不滿足呢?

舉個例子: 實現一個類似 12306訂票管控的需求: 早上6點到23點,才允許業務進行。

三部曲

第一步 搞配置類

package com.artisan.custom;import lombok.Data;import java.time.LocalTime;/*** @author 小工匠* @version 1.0* @description: TODO* @date 2022/2/14 0:21* @mark: show me the code , change the world*/@Data public class CustomTimeBetweenConfig {private LocalTime startTime;private LocalTime endTime; }

第二步 搞自定義謂詞工廠

類名必須要以RoutePredicateFactory結尾,然后繼承AbstractRoutePredicateFactory

package com.artisan.custom;import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange;import java.time.LocalTime; import java.util.Arrays; import java.util.List; import java.util.function.Predicate;/*** @author 小工匠* @version 1.0* @description: TODO* @date 2022/2/14 0:20* @mark: show me the code , change the world*/@Component @Slf4j public class CustomTimeBetweenRoutePredicateFactory extends AbstractRoutePredicateFactory<CustomTimeBetweenConfig> {public CustomTimeBetweenRoutePredicateFactory() {super(CustomTimeBetweenConfig.class);}/**** 真正的業務判斷邏輯* @param config* @return*/@Overridepublic Predicate<ServerWebExchange> apply(CustomTimeBetweenConfig config) {LocalTime startTime = config.getStartTime();LocalTime endTime = config.getEndTime();return new Predicate<ServerWebExchange>() {@Overridepublic boolean test(ServerWebExchange serverWebExchange) {LocalTime now = LocalTime.now();//判斷當前時間是否在在配置的時間范圍類return now.isAfter(startTime) && now.isBefore(endTime);}};}/*** 用于接受yml中的配置CustomTimeBetween=上午6:00,下午11:00** @return*/@Overridepublic List<String> shortcutFieldOrder() {return Arrays.asList("startTime", "endTime");}}

第三部 搞配置

在yml配置中謂詞配置是以我們自定義類CustomTimeBetweenRoutePredicateFactory
去除了RoutePredicateFactory接受開頭CustomTimeBetween

application-custom.yml

# 自定義謂詞工廠 spring:cloud:gateway:routes:- id: custom-timeBetween #id必須要唯一uri: lb://artisan-cloud-gateway-orderpredicates:#當前請求的時間必須在早上6點到 晚上11點 http://localhost:8888/selectOrderInfoById/1#才會被轉發#到http://artisan-cloud-gateway-order/selectOrderInfoById/1- CustomTimeBetween=上午06:00,下午11:00

激活profile

驗證

public static void main(String[] args) {System.out.println(LocalTime.now());}

現在是

訪問肯定不行

debug走下




改改時間 符合規則 試試能行嗎



OK, 妥妥的實現了


源碼

https://github.com/yangshangwei/SpringCloudAlibabMaster

總結

以上是生活随笔為你收集整理的Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。