自定义 PredicateFactory
可以定义针对于 Router 的 Predicate。
注意:
1、类名必须叫做XxxRoutePredicateFactory.注入到Spring容器后使用时的名称就叫做Xxx。
2、类必须继承 AbstractRoutePredicateFactory,让父类帮实现配置参数的处理
3、必须声明一个静态的内部类,进行传递参数
4、(可选)可以进行 重写 shortcutFieldOrder 方法进行属性字段排序,实现配置简写
5、重写apply( ) 函数,返回 true 表示路由成功,false 表示路由失败 404
如下测试案例(仅测试示例,没有实际意义,内置的断言能满足大多数的场景的):
public class TenantRoutePredicateFactory extends AbstractRoutePredicateFactory<TenantRoutePredicateFactory.Config> { public TenantRoutePredicateFactory() { super(TenantRoutePredicateFactory.Config.class); } @Override public Predicate<ServerWebExchange> apply(Config config) { return exchange -> config.getTenantId() != null && config.getTenantId().length() != 0; } /** * 字段排序实现配置简写 * * @return */ @Override public List<String> shortcutFieldOrder() { return List.of("tenantId"); } @Setter @Getter public static class Config { /** * 租户Id编码 */ private String tenantId; } }
>>>>>>>>>>>>>> 下一篇 : 过滤器 <<<<<<<<<<<<<<<<<
标签:网关,return,自定义,Config,TenantRoutePredicateFactory,public,config,Gateway From: https://www.cnblogs.com/Alay/p/17107593.html