当前位置: 首页 > news >正文

那些空号检测网站是怎么做的网站建设js是什么

那些空号检测网站是怎么做的,网站建设js是什么,三个字公司名字大全必过,怎么在手机上制作网站吗Spring Cloud Gateway 路由构建器的源码分析 文章目录 1. 路由构建器的入口2. 创建路由规则3. 设置路由规则和属性4. 路由过滤器的设置5. 构建和获取路由规则#xff1a;6. 实例化路由构建器#xff1a;8. 路由构建器的源码分析8.1 RouteLocator接口8.2 RouteLocatorBuilder…Spring Cloud Gateway 路由构建器的源码分析 文章目录 1. 路由构建器的入口2. 创建路由规则3. 设置路由规则和属性4. 路由过滤器的设置5. 构建和获取路由规则6. 实例化路由构建器8. 路由构建器的源码分析8.1 RouteLocator接口8.2 RouteLocatorBuilder接口8.3 DefaultRouteLocator实现8.4 RouteDefinitionRouteLocator实现 Spring Cloud Gateway的路由构建器是用于创建和配置路由的核心组件之一。它允许你以编程方式定义路由规则并设置各种路由属性和过滤器。下面是Spring Cloud Gateway路由构建器的源码分析 1. 路由构建器的入口 路由构建器的入口是RouteLocatorBuilder类它是一个构建器模式的入口类。通过RouteLocatorBuilder你可以创建和配置路由规则。 2. 创建路由规则 使用RouteLocatorBuilder的routes()方法创建一个RouteLocator实例用于定义路由规则。RouteLocatorBuilder的routes()方法返回一个Builder对象通过该对象可以进行路由规则的设置和配置。 3. 设置路由规则和属性 Builder对象提供了一系列方法用于设置路由规则和属性。可以使用Builder的route()方法设置路由规则例如指定请求路径、目标URI等。可以使用Builder的各种属性方法设置路由的附加属性例如请求谓词、过滤器等。 4. 路由过滤器的设置 通过Builder的filters()方法可以设置路由过滤器。可以使用过滤器工厂类如GatewayFilterFactory提供的方法创建过滤器并将其添加到路由规则中。 5. 构建和获取路由规则 使用Builder的build()方法构建RouteLocator实引言例生成最终的路由规则。RouteLocator表示完整的路由规则集合可以通过该实例获取所有配置好的路由规则。 6. 实例化路由构建器 要实例化RouteLocatorBuilder可以通过依赖注入或创建一个新的实例。通常可以在Spring Boot的配置类中使用Bean注解创建一个RouteLocatorBuilder的实例。 8. 路由构建器的源码分析 8.1 RouteLocator接口 这是一个功能接口定义了一个方法getRoutes()该方法返回一个Publisher当订阅时发布所有的Route集合。 8.2 RouteLocatorBuilder接口 RouteLocatorBuilder是Spring Cloud Gateway中用于构建RouteLocator的工具类它提供了一种简洁、易读的方式来定义路由。RouteLocatorBuilder的主要方法是routes()返回一个RoutesLocatorBuilder.Builder对象我们可以在此对象上定义特定的路由。 RouteLocatorBuilder的成员变量包括: ListRoutePredicateFactory这是一个负责创建路由断言的工厂列表断言用来判断请求是否满足特定条件。ListRouteFilterFactory这是一个负责创建过滤器的工厂列表过滤器用来对满足断言的请求进行处理。 RouteLocatorBuilder的主要方法包括: routes()这个方法返回一个RouteLocatorBuilder.Builder对象你可以在这个对象上使用诸如route()方法来定义路由。route(RouteLocatorBuilder.BuilderSpec spec)这个方法是RouteLocatorBuilder.Builder的一个方法它可以接受一个RouteLocatorBuilder.BuilderSpec参数然后根据这个参数来定义一个路由。你可以在这个方法的参数中定义断言和过滤器。 注意RouteLocatorBuilder并不负责加载和转换路由定义这是DefaultRouteLocator的职责。RouteLocatorBuilder只是提供了一个方便的方式来定义路由。 这里是一个简单的示例来展示如何使用RouteLocatorBuilder来定义路由 Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route(path_route, r - r.path(/get).uri(http://httpbin.org)).build(); }在此示例中我们定义了一个路由该路由将所有路径为/get的请求路由到http://httpbin.org。 8.3 DefaultRouteLocator实现 DefaultRouteLocator 是 Spring Cloud Gateway 的默认路由定位器实现负责加载和转换路由定义。它的源代码比较复杂这里只简要概述其主要功能和工作原理。 DefaultRouteLocator的核心成员变量包括 RouteDefinitionLocator用于从各种来源例如内存数据库配置文件等获取路由定义。ListRoutePredicateFactory用于根据路由定义创建断言断言用于判断请求是否满足特定条件。ListRouteFilterFactory用于根据路由定义创建过滤器过滤器用于处理满足断言的请求。 DefaultRouteLocator的主要方法是 getRoutes()返回所有有效的路由。该方法首先调用RouteDefinitionLocator来获取所有的路由定义然后对每一个路由定义创建一个断言和一组过滤器并将它们封装成一个Route对象。 这是一个简单的 getRoutes() 方法的实现流程 public FluxRoute getRoutes() {// 从RouteDefinitionLocator获取所有路由定义FluxRouteDefinition routeDefinitionFlux this.routeDefinitionLocator.getRouteDefinitions();// 转换每个路由定义为Route对象return routeDefinitionFlux.map(routeDefinition - {// 创建断言PredicateServerWebExchange predicate this.getPredicate(routeDefinition);// 创建过滤器链ListGatewayFilter gatewayFilters this.getFilters(routeDefinition);// 生成并返回Route对象return new Route(routeDefinition.getId(), predicate, gatewayFilters, routeDefinition.getUri());}); }8.4 RouteDefinitionRouteLocator实现 RouteDefinitionRouteLocator是Spring Cloud Gateway中的一个核心类它的主要职责是提供路由定位的功能。它会从RouteDefinitionLocator中获取所有的RouteDefinition然后将这些RouteDefinition转换成Route对象以供后续的路由匹配和过滤使用。 简单的RouteDefinitionRouteLocator类的源码解析 public class RouteDefinitionRouteLocator implements RouteLocator {private final RouteDefinitionLocator routeDefinitionLocator;private final ListGatewayFilterFactory gatewayFilters;private final ListRoutePredicateFactory routePredicates;private final RouteFactory routeFactory;public RouteDefinitionRouteLocator(RouteDefinitionLocator routeDefinitionLocator,ListGatewayFilterFactory gatewayFilters,ListRoutePredicateFactory routePredicates,RouteFactory routeFactory) {this.routeDefinitionLocator routeDefinitionLocator;this.gatewayFilters gatewayFilters;this.routePredicates routePredicates;this.routeFactory routeFactory;}Overridepublic FluxRoute getRoutes() {return this.routeDefinitionLocator.getRouteDefinitions().flatMap(this::convertToRoute);}private MonoRoute convertToRoute(RouteDefinition routeDefinition) {ListPredicateServerWebExchange predicates this.routePredicates.stream().map(factory - factory.apply(routeDefinition.getId())).collect(Collectors.toList());ListGatewayFilter filters this.gatewayFilters.stream().map(factory - factory.apply(routeDefinition.getFilters())).collect(Collectors.toList());return this.routeFactory.createRoute(routeDefinition, predicates, filters);} }在这个类中我们可以看到以下重要部分 构造函数它接收一个RouteDefinitionLocator一个GatewayFilterFactory列表一个RoutePredicateFactory列表和一个RouteFactory。这些都是从Spring容器中注入的。 getRoutes()方法该方法通过调用RouteDefinitionLocator.getRouteDefinitions()来获取所有的RouteDefinition然后通过flatMap操作符将每个RouteDefinition转换为一个Route对象。 convertToRoute(RouteDefinition routeDefinition)方法这个方法会将一个RouteDefinition转换为一个Route对象。转换过程中会使用RoutePredicateFactory列表和GatewayFilterFactory列表来创建路由断言和过滤器。 这个类的主要作用就是将路由定义RouteDefinition转换成实际可用的路由Route以供后续的路由匹配和过滤使用。 RouteDefinitionRouteLocator类并不是Spring Cloud Gateway的官方源码上面的代码只是一个简化版本用来解释RouteDefinitionRouteLocator工作原理。在实际的Spring Cloud Gateway源码中这个类的名字是RouteDefinitionRouteLocator并且它的实现要复杂得多包括处理各种异常情况处理各种路由配置选项等等。
http://www.w-s-a.com/news/530867/

相关文章:

  • 扬州网站建设公司网站推广是什么岗位
  • 双线网站管理咨询公司是做什么
  • asia域名的网站贵州光利达建设工程有限公司局网站
  • 梅州南站济南做网络安全的公司
  • 网站源代码 phpseo营销推广费用
  • 南京专业制作网站深圳整装装修公司排名
  • 网站制作在哪里比较好网页设计的要点有哪些
  • 自己做网站原始代码高端品牌服装
  • 九度企业网站推广软件龙泉市建设局网站
  • 做个企业网网站怎么做专业3合1网站建设公司
  • 龙岩网站建设teams熊掌号公司网站的实例
  • 电商模板网站免费省级精品课程网站建设
  • 网站建设的规划书桂林生活最新网
  • 广东省建设工程执业中心网站wordpress的分类目录和标签
  • 甘肃省两学一做专题网站广东外发加工网
  • 用python导入wordpress公司网络优化方案
  • 效益成本原则网站建设wordpress 上传rar
  • 大连网站制作 连城传媒渠道网络公司官网
  • 电影天堂网站用什么程序做的wordpress 添加链接地址
  • 购买空间网站哪个好重庆英文网站建设
  • 建设网站需要注意什么问题设计网页通常使用什么语言
  • 彩票网站建设要多少钱西安英文网站建设
  • 静态班级网站印象云笔记 wordpress
  • 网站表单及商品列表详情模板永川网站制作联系电话
  • 网站建设与维护难不难网络服务机构的网站
  • 用三权重的网站做友链有好处没企业年金怎么查询
  • 工行网站跟建设网站区别wordpress加入地图
  • 网站的风格对比信息表广告门
  • 教育网站建设毕业设计说明书门户网站模式
  • 洛阳霞光建设网站html做分模块的网站